Commit Graph

114 Commits

Author SHA1 Message Date
Stefan Ceriu a625ad0ee6 Make sure we update the push notification badge using the received, server-provided unread count. 2025-05-02 11:18:10 +03:00
Stefan Ceriu 0620bd45fc Flatten out the NSE file structure and switch room fetching to the notificationClient instead of the base one
- the notification client uses its internal in-memory store backed client which has up to date data after running the sliding sync loop
- see https://github.com/matrix-org/matrix-rust-sdk/pull/4991 for more details
2025-04-30 12:33:20 +02:00
Stefan Ceriu cad21daeea Replace the old RoomInfoUpdateListener with the SDKListener 2025-04-29 19:45:55 +03:00
Stefan Ceriu 4e2e2649fc Set a total request max retry time for network requests originating in the notification service extension. 2025-04-29 19:45:55 +03:00
Stefan Ceriu 690ff3caa6 Rely on the room's info to decide whether a call ringing notification is outdated and should be ignored as opposed to a time based approach. 2025-04-29 19:45:55 +03:00
Stefan Ceriu 0ff72fc5a1 Reduce the timeout for network requests originating in the notification service extension 2025-04-29 19:45:55 +03:00
Stefan Ceriu 308d7bad30 Introduce a NotificationHandler object to split out notification content handling from the rest of the NSE core logic. 2025-04-17 15:24:12 +03:00
Stefan Ceriu 13186ea7c2 Remove unused NSE Task extension 2025-04-17 15:24:12 +03:00
Stefan Ceriu f71e5facb8 Switch from an always returning the notification content approach at every step to passing it in as mutable. 2025-04-17 15:24:12 +03:00
Stefan Ceriu aaed6db0ea Extract NSE specific code out of the UNNotificationContent extension 2025-04-17 15:24:12 +03:00
Stefan Ceriu 5ad25d8492 Refactor the NSE so that the original notification content is preserved between all the different processing steps
- building brand new content is probably interfering with how iOS syncs up delivered and seen notifications between devices
- simplify all the various steps and make the flows easier to follow
2025-04-17 15:24:12 +03:00
Doug 7cf1d08b20 Fix a bug where your own emotes showed as '* You emoted'. (#4038) 2025-04-17 12:39:41 +01:00
Mauro Romito 9d53b29902 sdk: update to 25.04.14 2025-04-14 14:15:42 +02:00
Mauro Romito bf875a23ce change: hiding timeline media has three options 2025-04-09 18:55:34 +02:00
Stefan Ceriu eef212eaf3 Set the NSE client as memory constrained. This, following the roomLoadSettings tweaks, changes SQLite store settings and further decreases memory consumption. 2025-04-08 12:23:37 +03:00
Stefan Ceriu 7657f0f138 Refactor the NSE to create a new UserSession every time a payload comes in and pass the room down to the SDK so it can optimize how many rooms it loads from the store and how much memory it's using.
- this will undo creating at most one user session pe process as that shoulnd't be a problem anymore
- it also renames some methods and improves the logging
2025-04-03 18:08:34 +03:00
Stefan Ceriu 5500cc2335 Remove the event cache feature flag, it's enabled by default on the SDK and we haven't had any bug reports for it. 2025-04-03 18:08:34 +03:00
Stefan Ceriu 62636d8378 Bump the RustSDK to v25.04.02 2025-04-03 18:08:34 +03:00
Doug a142ce43af Add developer options for Rust's Trace Log Packs. (#3929)
* Add support for configuring log packs.

* Update call widget parameters.

* Update the SDK.
2025-03-21 19:00:13 +00:00
Mauro Romito ff721f6577 hide invite avatars when such flag is on
This affects:
- Invited room preview inviter avatar
- Invited room preview room avatar
- Invited room cell inviter avatar in the room list
- Invited room cell room avatar in the room list
- Push notification for an invite
2025-03-21 15:41:39 +01:00
Stefan Ceriu 07e96115ce SDK update (#3891)
* Bump the RustSDK to v25.03.11

* Replace oidc login prompt with nil following the changes from https://github.com/matrix-org/matrix-rust-sdk/pull/4761

```
/// * `prompt` - The desired user experience in the web UI. No value means
///   that the user wishes to login into an existing account, and a value of
///   `Create` means that the user wishes to register a new account.
```

* Fix trailing closure warnings

* Update the client proxy after making `getNotificationSettings()` and  `cachedAvatarUrl()` async (they used to be blocking on the rust side).

* Move `Room.isEncrypted` to the info publisher and manually update the encryption state when creating the room.

* Bump the SDK again to v25.03.12 - This introduces a new way to configure the tokio runtime that we can use to have extensions use less memory
- introduce a new Target struct that takes care of setting up rust services (tracing and tokio) for our various targets
- cleanup MXLog and friends

* Address PR comments

* Bump the SDK again, switch back to using `.consent` as the OIDC login prompt (which was reintroduced in matrix-org/matrix-rust-sdk/pull/4791)
2025-03-13 11:17:37 +02:00
Doug b6b9f4162b Add a couple of extra logs around the state of call ringing notifications. (#3808) 2025-02-24 10:07:33 +00:00
Doug f6a1d38972 Log whether a notification is expected to make a noise. (#3782)
* Log whether a notification is expected to make a noise.

* Also log the system notification sound setting too.
2025-02-11 09:59:46 +00:00
Stefan Ceriu 34d8adcf09 Refactor how notifications are preprocessed and be explicit about which ones are supposed to be displayed or discarded. 2025-02-10 12:28:17 +02:00
Element CI 342f25296d updated the notification string 2025-01-31 17:28:25 +01:00
manuroe 3950cac085 Dual licensing: AGPL + Element Commercial (#3657)
* New LICENSE-COMMERCIAL file

* Apply dual licenses: AGPL + Element Commercial to file headers

* Update README with dual licensing
2025-01-06 11:27:37 +01:00
Stefan Ceriu df3e5976ce Bump the RustSDK to v1.0.79; add a feature flag for the new rust side ClientBuilder::useEventCachePersistentStorage 2024-12-10 18:19:31 +02:00
Stefan Ceriu 79473ef2e9 Bump the RustSDK to v1.0.67 (#3512)
* Bump the RustSDK to v1.0.67

* PR comments

---------

Co-authored-by: Doug <douglase@element.io>
2024-11-13 18:03:30 +00:00
Stefan Ceriu b122b02bee Share extension (#3506)
* Setup simple share extension

* Switch the app url scheme to be the full bundle identifier

* Setup a share extension that show a SwiftUI view, uses rust tracing and redirects to the hosting aplication

* Move media as json through the custom scheme into the main app and deep link into the media upload preview screen

* Fix message forwarding and global search screen room summary provider filtering.

* Tweak the message forwarding and global search screen designs.

* Add a room selection screen to use after receiving a share request from the share extension

* Fix share extension entitlements

* Share the temporary directory between the main app and the extensions; rename the caches one.

* Remove the no longer needed notification avatar flipping fix.

* Extract the placeholder avatar image generator from the NSE

* Nest `AvatarSize` within the new `Avatars` enum

* Donate an `INSendMessageIntent` to the system every time we send a message so they appear as share suggestions

* Support suggestions in the share extension itself

* Improve sharing animations and fix presentation when room already on the stack

* Clear all routes when sharing without a preselected room.

* Fix broken unit tests

* Various initial tweaks following code review.

* Correctly clean up and dismiss the share extension for all paths.

* Move the share extension path to a constants enum

* Rename UserSessionFlowCoordinator specific share extension states and events

* Add UserSession and Room flow coordinator share route tests

* Tweak the share extension logic.
2024-11-13 14:02:47 +02:00
Doug 77ade52718 Update the strings for unsupported calls. (#3502) 2024-11-11 17:45:06 +00:00
Doug e6f4dd33a0 Add developer option to hide media in the timeline. (#3366) 2024-10-03 17:59:39 +01:00
Stefan Ceriu 9d23dec2e9 Tracing and integration test tweaks (#3336)
* Disable image and document picker integration tests as they randomly fail to load and are flakey.

* Delete any pre-existing log files

* Various tracing tweaks and fixes:
- delete the custom tracing log levels as we can't control their ouput
- implement comparable on them
- change default levels only if the new chosen level increases their verbosity

* Make logging targets mandatory and fix their logging levels

* Switch back to using the `run_tests` reset simulator flag as `fastlane snapshot reset_simulators` was too generic and slow

* Switch all integration test taps to `tapCenter` (nee forceTap) after noticing missed taps on CI.

* Make the logging file prefix explicit, let the main app not use one.

* Rename tracing configuration `target` to `currentTarget`
2024-09-27 15:08:47 +03:00
Valere 23ab453a1e crypto: rename invisible crypto flag to deviceIsolationMode (#3331) 2024-09-26 12:24:46 +01:00
Valere f7d878bac6 crypto: Add configuration flag to enable invisible crypto (#3247) 2024-09-18 16:30:45 +01:00
Doug d24214c674 Make sure we don't reuse an old NSEUserSession after logging out and back in. (#3273) 2024-09-12 10:24:05 +01:00
Doug af3a6ccbed Make the SessionDirectories type responsible for cleaning up data. (#3261) 2024-09-11 14:32:03 +01:00
Stefan Ceriu 664e87fe87 Switch license to AGPL (#3237)
* Switch license file to AGPL

* Update file copyright headers

* Update the default project file header
2024-09-06 16:34:30 +03:00
Doug c9603dce55 Adopt sliding sync versions for client Restoration. 2024-08-30 14:45:54 +03:00
Doug 812c5d5c61 Update the SDK (#3196)
* Update the SDK.

* Fix API breaks on send failures and propagate the new type.

* Handle new SDK ShieldState.

* Set up the ClientBuilder's `cachePath` option.

* Delete the cacheDirectory during logout/clearCache.

* Add unit tests for RestorationToken decoding and SessionDirectories generation.
2024-08-27 11:06:26 +01:00
Doug d54e08e815 Remove delivered notifications if their event gets redacted. (#3191) 2024-08-22 13:49:00 +01:00
Doug a1cb6bd376 Clarify the mention copy in notifications. (#3142) 2024-08-22 11:51:05 +00:00
Stefan Ceriu f89c3e54b4 Automatically try reloading failed images on network changes (#3170)
* Add the networkMonitor to the NSE and delete the old MockMediaLoader

* Generate a MediaLoaderMock through AutoMockable and use it in the MediaProviderTests

* Implement an ImageProvider mechanism that automatically tries reloading images when connectivity is established again and use it for LoadableImages

* Merge the ImageProvider protocol back into the MediaProvider

* Address PR review comments

* Provide a default sdk client request configuration

* Address tasks not automatically cancelling themselves when views get deallocated
2024-08-15 18:20:19 +03:00
Mauro ff2c42d53b Pinned items timeline implementation for the banner (#3099) 2024-08-05 14:09:05 +02:00
Doug bf22250b45 Automatically sign out when toggling the SSS feature flag. (#3071) 2024-07-23 11:55:51 +01:00
Doug 2fb7f65957 Add a feature flag for Simplified Sliding Sync. (#3057)
* Disable SSS when logging out.

* Bump the SDK.
2024-07-18 10:16:51 +01:00
Doug 288d2c2fdc Add a ClientBuilder hook. (#3056) 2024-07-18 09:47:37 +01:00
Doug 3465ea4cc1 Use a Client in AuthenticationService now that the Rust one has been removed. (#2954)
* Replace Rust's Authentication service by building a Client.

* Drop the Proxy from AuthenticationServiceProxy[Protocol].

* Make sure to call abortOIDCLogin.

* Centralise common ClientBuilder code.

* Update the SDK.
2024-06-24 15:05:00 +01:00
Stefan Ceriu 23b0cde845 Synchronize access to the new NSE user session property 2024-06-19 19:49:41 +03:00
Stefan Ceriu f291f10f46 Avoid creating multiple clients if the NSE is invoked more than once on the same process 2024-06-19 19:49:41 +03:00
Doug 2487895207 Adopt Rust's new sessionPath that replaces the basePath (#2903) 2024-06-06 18:35:57 +01:00