* Remove the now unused setting to disable in-app notifications.
* Move visible account settings into AccountSettings.
Have ignored enableNotifications for now as that will require reworking the NotificationManager.
* Allow different sounds to be selected for each account.
* Move defaultNotificationTone into AccountSettings.
Remove some redundant injections when passed alongside a user session too.
# Conflicts:
# ElementX/Sources/Screens/PinnedEventsTimelineScreen/View/PinnedEventsTimelineScreen.swift
# ElementX/Sources/Screens/Timeline/TimelineViewModel.swift
* create DependenciesProtocol and replace ServiceLocator registration with it
replace mocking calls for ServiceLocator to Dependencies
replace ServiceLocator with instance level calls
replace ServiceLocator configs with TestDependencies config in Tests
replace servicelocator usage in analytics service
replace remaining ServiceLocator calls in unit tests
that depended on the UnitTestAppCoordinator configuration with per suite dependencies instances
fix swiftlint warning
remove remaining references to ServiceLocator
make dependencies properties consistent in tests
delete Dependencies and DependenciesProtocol
fix whitespace modifications
updates from PR feedback
a pass over converting AppSettings and AnalyticsService test instance properties to per test instantiation
fix a missed PR feedback
Sync up after rebase
create DependenciesProtocol and replace ServiceLocator registration with it
replace mocking calls for ServiceLocator to Dependencies
replace ServiceLocator with instance level calls
replace ServiceLocator configs with TestDependencies config in Tests
replace servicelocator usage in analytics service
replace remaining ServiceLocator calls in unit tests
that depended on the UnitTestAppCoordinator configuration with per suite dependencies instances
fix swiftlint warning
remove remaining references to ServiceLocator
make dependencies properties consistent in tests
delete Dependencies and DependenciesProtocol
* AppSettings is instance level mockable now
* replace mocked and preview usages of reset + AppSettings global init with
AppSettings(store: UserDefaultsMock())
* AppSettings.UserDefaultsKeys is now a RawRep struct, making it extensible
* update tests with new AppSettings so it builds
* update remaining AppSettings test/mock inits
* AppSettings.UserDefaultsKey conformed to ExpressibleByStringLiteral
* addressed issues found in first pass ai review
* update AppSettings instantiations after rebase
* fix accessibility tests coordinator after rebase
* Rename to VolatileUserDefaults
* AppSettings init uses mandatory parameter
* Revert UserDefaultsKey to enum
* Add TrackedUserDefaults to be able to reset the defaults object
* Added volatile static func to AppSettings
* Use .volatile() static func instead of full init
* review fixups
* Resolve build issues after rebase
* updated enterprise module
* remove the static reset settings call from the preview tests
---------
Co-authored-by: Mauro Romito <mauro.romito@element.io>
* Allow MediaPickerScreen users to select the media selection mode (single or multiple)
* Fix cancellation
* Add support for multiple media URLs on the MediaUploadPreviewScreen.
* Support processing more URLs on the `MediaUploadingPreprocessor` and sending more on the `MediaUploadPreviewScreen`
* Add feature flag for `multipleAttachmentUploadEnabled`
* Add a label showing the current preview item index in the MediaUploadPreviewScreen
* Add support for dragging and dropping or pasting multiple items at the same time.
* Support sharing more than one file through the share extension.
* Limit the number of items that can be shared in one go to 5.
* Fix unit tests
* Fix incorrect fatal error when dealing with single selection media pickers.
* Document the `multipleAttachmentUploadEnabled` usage in the context of the MediaPicker.
* Use a task group for processing selected media in the photo library picker.
* Use a task group for processing multiple selected media in the MediaUploadingPreprocessor
* Switch the maximum number of items that can be shared to 10.
* Allow multiple items to be pasted at the same time.
* Move the rageshakeURL configuration from the BugReportService to AppSettings.
* Refactor Target to return a handle when configuring.
This helps with reconfiguration and removes the @MainActor constraint.
* 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)
* 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.