Commit Graph

462 Commits

Author SHA1 Message Date
Doug
26eda3ccfd Move call presentation from the chats flow into the user session flow. (#4459) 2025-09-03 17:01:07 +01:00
Doug
88131ce776 Remove the BugReportService from the ServiceLocator.
It is directly injected everywhere now.
2025-08-27 18:13:03 +01:00
Doug
3138c854c4 Remove all uses of the ServiceLocator from within Coordinators and View Models.
It is still used for mocks in tests, previews etc, and still used in the AppCoordinator.
2025-08-27 18:13:03 +01:00
Doug
8c68ec3b83 Introduce flow parameters to simplify dependencies for child flows. (#4448) 2025-08-27 12:56:06 +00:00
Doug
4e53bd070d Hide the tab bar when pushing screens on iPhone as requested by the designs. (#4444)
Make the tab bar hide when pushing screens on iPhone as requested by the designs.

Annoyingly we couldn't simply add a second call to .toolbar(.hidden, for:.tabBar) on the pushed screens, but this way is automatic and there's still an override so it's good enough for now.
2025-08-27 10:31:56 +01:00
Doug
aabae58c9e Tidy up some logs that have a prefix. (#4443)
We haven't needed these for ages, Rust adds them to the log lines.
2025-08-26 16:21:10 +01:00
Doug
9ff82a478e Add a feature flag for spaces. (#4429)
* Remove the huge conditional compilation block on AppSettings.

It is still required for the ElementCallBaseURL however.

* Add a feature flag for spaces.
2025-08-22 13:47:23 +01:00
Stefan Ceriu
035d35e38b Remove the multipleAttachmentUploadEnabled feature flag. 2025-08-20 14:20:13 +03:00
Copilot
9fab9f9c9a Add a Low Priority room filter behind a feature flag. (#4394)
* Add Low Priority room filter with incompatibility rules

Co-authored-by: pixlwave <6060466+pixlwave@users.noreply.github.com>

* Add a feature flag and use the SDK filters.

* Fix filter tests and add RoomSummaryProvider tests for the default filters.

* Remove unnecessary comment.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: pixlwave <6060466+pixlwave@users.noreply.github.com>
Co-authored-by: Doug <douglase@element.io>
2025-08-20 11:56:44 +01:00
Doug
624f74816e Remove the share_pos developer option. (#4406) 2025-08-13 08:36:40 +00:00
Doug
052d503dee Fix the push animation when selecting a room with the compact layout on iPad.
Also makes sure we don't animate the change of room in the split's detail when using the regular layout
2025-08-08 10:33:08 +01:00
Doug
0685d29fe4 Use @Observable instead of ObservableObject for our NavigationCoordinators. 2025-08-08 10:33:08 +01:00
Doug
78f505cbcf Fix a bug when a compact split view doesn't react to a change of root coordinator in the sidebar. 2025-08-08 10:33:08 +01:00
Doug
27757ee5d1 Move the Settings flow from the Chats flow up one level to the UserSession flow. (#4390)
* Add the basis for a state machine to UserSessionFlowCoordinator.

* Move the Settings flow from the Chats flow to UserSession flow.

It now works from the Spaces tab.

* Add a StateMachineFactory and use it to publish the state in the tests.
2025-08-07 12:13:02 +00:00
Doug
5a62dbb0a2 Add a SpaceExplorerFlowCoordinator. (#4383)
* Add a SpaceExplorerFlowCoordinator.

* Project tweaks

- iOS 17.5 so that we can use the simulator.
- Make a Spaces group for common Space related views.
- Fix the tab bar badge colour on iPhone landscape and iPadOS 17 (18 is still wrong 😒)
2025-08-07 12:48:53 +01:00
Mauro
979f526f19 Last Owner should edit admins, and not leave when is last (#4372) 2025-08-07 08:40:14 +00:00
Doug
3adf8b0610 Implement tab bar badges, visibility and selection. (#4373) 2025-08-05 09:23:45 +01:00
Doug
6133a563cf Hide the tab bar whilst we're working on it and add some tests. 2025-07-31 14:09:26 +01:00
Doug
dac804309e Move session related responsibilities from ChatsFlowFlowCoordinator to UserSessionFlowCoordinator.
Specifically: onboarding, session verification and logout.
2025-07-31 14:09:26 +01:00
Doug
a18fc8ff5b Re-introduce a basic UserSessionFlowCoordinator using the NavigationTabCoordinator. 2025-07-31 14:09:26 +01:00
Doug
1503e5aaf1 Rename UserSessionFlowCoordinator to ChatsFlowCoordinator. 2025-07-31 14:09:26 +01:00
Doug
26bc46e6ff Create a NavigationTabCoordinator to manage a TabView. 2025-07-31 14:09:26 +01:00
Stefan Ceriu
0915cb81a8 Multi file uploads (#4358)
* 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.
2025-07-30 15:44:05 +03:00
Doug
0fb31888ea Re-enable share_pos persistance. (#4355) 2025-07-25 12:12:48 +00:00
Stefan Ceriu
1e7afc93fa Remove threadRootEventID parameters from TimelineProxy send methods. This is now handled internally to the SDK as long as the right timeline instance is used. 2025-07-24 14:55:34 +03:00
Doug
d6ca170ed9 Update the default logs directory and allow collection from elsewhere. (#4352)
* Replace deprecated URL methods.

* Start putting log files in Library/Logs (moving existing files with a migration.)

* Make Tracing.deleteLogFiles aware of the legacy logs location.

* Allow the logs to be collected from a different directory.
2025-07-24 09:49:29 +01:00
Doug
ee9f055822 Add a TracingHook. (#4345) 2025-07-23 14:29:31 +01:00
Doug
b7867dac85 Make the remote settings hook usable within the app extensions. (#4342) 2025-07-22 17:09:53 +01:00
Doug
f65b191c8a Refactor Rageshake URL and Target configuration. (#4337)
* 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.
2025-07-22 10:19:26 +01:00
Doug
3cb815f7d4 Show an alert when entering an account provider that requires Element Pro. (#4326) 2025-07-17 12:41:26 +00:00
Doug
ecca6aa453 Fix the user defaults key for the developer options. (#4328) 2025-07-17 10:06:28 +01:00
Doug
a489ec8a8c Merge the AuthenticationService with the QRCodeLoginService. (#4323)
* Merge the AuthenticationServer with the QRCodeLoginService.

* Merge AuthenticationClientBuilderFactory and AuthenticationClientBuilder into AuthenticationClientFactory

The separation is no longer needed now that password/OIDC login and QR code login have a similar API shape.
2025-07-15 17:59:15 +01:00
Mauro
84e095f726 Automatic Accessibility Audits on previews part 1 (#4322)
* setup target

* accessibility tests implementation

* removed ipad check

* pr improvements

* updated project
2025-07-15 14:40:16 +02:00
Mauro
5837ebdca3 added a feature flag for share pos + updated the SDK (#4312) 2025-07-10 15:03:03 +02:00
Doug
3862929356 Update and enable the new bloom style on the home screen. (#4291)
* Update Compound

* Adopt the new accent colour (and gradient) tokens.
2025-07-07 11:23:03 +01:00
Stefan Ceriu
4d616c550c Add support for the new client wide threads feature flag
- enable it everywhere as it's safer than dealing with different configurations
2025-07-04 16:04:46 +03:00
Doug
e882b9e7b8 Support runtime customisation of the rageshake URL. (#4267) 2025-06-30 10:18:25 +01:00
Doug
b763ed97ab Stop VoiceOver from reading the screen behind the current call. (#4265)
As we're using an overlay for the presentation (to keep the web view alive when minimized), we need to make sure to hide everything behind the overlay from VoiceOver.
2025-06-27 11:15:05 +01:00
Richard van der Hoff
24ce5c03de Add a developer option for history sharing on invite
Adds a new developer flag, enabling our experimental support for MSC4268.
2025-06-11 11:24:29 +03:00
Doug
681ec8ee38 Add a RoomScreenHook. 2025-06-10 10:28:18 +03:00
Stefan Ceriu
84478c8251 Setup composer actions within threaded timelines. 2025-06-10 08:57:08 +03:00
Doug
b4174aed22 Adopt StateStoreViewModelV2 in the remaining settings screens. (#4158)
* Move the AuthenticationStartScreen into the Authentication directory.

* Commit the updated Sentry license.

No idea why they dropped the 2024 🤷‍♂️

* Use StateStoreViewModelV2 in BugReportScreen.

* Use StateStoreViewModelV2 in UserDetailsEditScreen.

* Use StateStoreViewModelV2 in NotificationSettingsScreen.

* Use StateStoreViewModelV2 in NotificationSettingsEditScreen.

* Use StateStoreViewModelV2 in LegalInformationScreen.

* Use StateStoreViewModelV2 in LogViewerScreen.

* Use StateStoreViewModelV2 in AnalyticsSettingsScreen.

* Rename AdvancedSettingsScreen directory.

* Use StateStoreViewModelV2 in EncryptionResetScreen.

* Use StateStoreViewModelV2 in EncryptionResetPasswordScreen.

* Use StateStoreViewModelV2 in SecureBackup…Screens.

* Use StateStoreViewModelV2 in LoginScreen.

Seems this one was ignored waiting on the fulfillment transitionValues implementation.

* Use StateStoreViewModelV2 in DeactivateAccountScreen.

* Move DeactivateAccountScreen into the Settings directory.
2025-05-30 12:24:56 +01:00
Mauro
c1dfce4935 Handle media previews and invite avatars through the account data (#4142)
* added account data media display policy handling to NSE

* pr suggestions

* update compound

* code improvement
2025-05-28 19:51:34 +02:00
Stefan Ceriu
f20629b1dc Update the Enterprise submodule and make use of the newly added secrets configuration mechanism 2025-05-27 18:21:11 +03:00
Stefan Ceriu
3dd98adeeb Setup the new RustSDK sentry integration 2025-05-27 18:21:11 +03:00
Doug
91195305aa Add a developer option that hides notification alerts when a sound wouldn't be played.
Enabling this makes isNoisy behave like iMessage's Hide Alerts option.
2025-05-26 16:05:38 +03:00
Stefan Ceriu
e590035fea Bump the RustSDK to v25.05.26 and handle breaking changes
- the new sentry integration will be handled in #4145
2025-05-26 13:22:57 +03:00
Doug
33fcb8e667 Allow the app to be configured to bypass the server selection screen. (#4131)
* Make account provider configuration more flexible.

- Change defaultHomeserverAddress to an array of providers (needs UI).
- Add allowOtherAccountProviders to prevent the user from manually entering a provider.

* Refactor QR code scan failures into a common type.

* Validate scanned QR codes against the allowed account providers.

* Hide the login flow on the QR code screen when restricted.
2025-05-20 11:09:50 +01:00
Stefan Ceriu
4c7791ab24 Fix various small errors when running in the Swift 6 language mode (#4109)
* Fix various small errors when running in the Swift 6 language mode

* Make the `TargetConfiguration` run on the main actor.

* Fixed a comment

* Add a comment as to why we can't make the whole NSE a main actor.

* Fix the unit tests

* Fix `blankLinesAtStartOfScope` swiftformat error.
2025-05-13 11:43:47 +03:00
Doug
cb5c7337d2 Add support for Account Provisioning links. (#4108)
* Add support for account provisioning links and route them to the authentication flow.

* Use the provisioning parameters to configure the authentication flow.

* Add UI tests for the provisioned authentication flow.

* Record new preview snapshots.

* Add unit tests.

* Make the domain configurable in the app settings.

* Use the loginHint in the login screen too.
2025-05-12 13:28:34 +01:00