1983 Commits

Author SHA1 Message Date
Mauro b628f5d2c2 EC: Native switch for audio outputs/inputs and earpiece (#4136)
* EC: native switch for audio outputs/inputs and earpiece

also includes proximity sensor enabling when the earpiece is used.

* test disabling and re-enabling audio on audio change

* Revert "test disabling and re-enabling audio on audio change"

This reverts commit 907c791b8df7009214f5c164ecf8fe7d90a8addc.

* pr suggestions

* pr suggestion and small refactor of the widgetAction handler
2025-06-05 12:07:41 +00:00
Doug 458c6aaa57 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
Stefan Ceriu 565ca3ab0b Setup the threaded timeline media preview action 2025-05-30 13:32:29 +03:00
Stefan Ceriu 210a0dba1a Setup action forwarding for threaded timelines. 2025-05-30 13:32:29 +03:00
Mauro aef91b5bc9 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
Doug 8a1a0ce1a4 Fix a couple of crashes on macOS from a missing environment object. (#4153) 2025-05-28 11:24:35 +01:00
Stefan Ceriu f9b3281172 Bump the SDK to v25.05.26-2 and update the breaking changes following the RoomListItem removal 2025-05-26 18:11:24 +03:00
Doug 542d382870 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 29cfcb0b85 Better document the various protocols and classes involved in dealing with room timelines. 2025-05-23 16:08:18 +03:00
Stefan Ceriu 972084aaf7 Rename the TimelineProvider to TimelineItemProvider 2025-05-23 16:08:18 +03:00
Stefan Ceriu d058e7cd25 Introduce a new SwiftUI TimelineView layer (wrapping the representable) to hold all the timeline specific bindings that are currently duplicated throughout the screens a timeline is used. 2025-05-23 16:08:18 +03:00
Stefan Ceriu 250a7ed451 Move the pinned timeline in line with the other timeline creation methods and have it report errors just like the others 2025-05-22 18:14:55 +03:00
Doug d76b76d041 Don't group timeline items if more than 5 minutes has passed. (#4138)
Matches the behaviour on web.
2025-05-21 10:34:22 +01:00
Doug 5197e41928 Show an account provider picker on the server confirmation screen when required. (#4137)
* Add a picker mode to the ServerConfirmationScreen.

* Hook up the account provider picker in authentication the flow.

Simplify the authentication flow coordinator, removing the restricted state.

* UI/Snapshot tests.
2025-05-20 17:21:08 +01:00
Mauro Romito 18519c15dd integration tests: support for the bottom sheet 2025-05-20 17:39:12 +02:00
Doug 390553f5fe 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 10fb2b5dda Add mechanism for opening up a threaded timeline 2025-05-20 12:18:55 +03:00
Hugh Nimmo-Smith 2f938d3cbf Send full user agent header to server during OIDC authentication and when viewing Account and Device management screens (#4106) 2025-05-19 15:09:11 +00:00
Mauro 9a8819ac26 Always open manage member sheet (#4110)
* always open manage member sheet

* Update ElementX/Sources/Screens/ManageRoomMemberSheet/ManageRoomMemberSheetModels.swift

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

* Update ElementX/Sources/Screens/ManageRoomMemberSheet/ManageRoomMemberSheetModels.swift

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

* pr suggestions and handled the buttons actions correctly

* Update ElementX/Sources/Screens/ManageRoomMemberSheet/View/ManageRoomMemberSheetView.swift

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

* fixed some compilation errors

* added some documentation

* using a struct instead of a protocol

* using arguments instead of a struct

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2025-05-19 14:17:57 +00:00
Stefan Ceriu 5af330cf6e 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
Stefan Ceriu e1984ccdc0 Fix room list heroes label format
- change from `Alice, Bob and Charlie` to `Alice, Bob, Charlie and 42 others` (when applicable)
2025-05-12 19:40:14 +03:00
Doug 876618d557 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
Mauro Romito 36242bc271 added argument to voice over on the search bar automatically
- also removed the geomtry reader in favour of a `readWidth` function
2025-05-09 10:18:34 +02:00
Doug 489f784640 Add a state machine to the AuthenticationFlowCoordinator. (#4103) 2025-05-08 15:41:52 +01:00
Mauro Romito 895210cde9 updated learn more link in identity confirmation 2025-05-07 11:42:13 +02:00
Stefan Ceriu 0c5be93a75 Move where the developer options are shown and store them in the app settings. 2025-05-02 15:13:59 +03:00
Doug 3262fb4cab Fix the integration tests. (#4084)
* Fix logging/alerts during OIDC cancellation.

- Cancelling from within the web view wasn't being handled since moving the UserIndicatorController into the presenter.
- The WAS canceledLogin error code is also used when the system cancels the login. When the system cancels there's a failure reason included in the error.

* Allow UI tests to tap on any point within a view.

* Make the homeserver optional in integration tests.

* Dismiss the keyboard after entering a username to reveal the password text field.

Do the same after entering the password field too, just in case.

* Add a loop while waiting for the WAS prompt to be shown.
2025-05-01 12:07:04 +01:00
Doug d45b232072 Adopt StateStoreViewModelV2 in the authentication screens and some settings screens. (#4083)
* Add some tests for DeferredFulfillment with Observation.

* Use StateStoreViewModelV2 in AuthenticationStartScreen.

* Use StateStoreViewModelV2 in ServerConfirmationScreen.

* Use StateStoreViewModelV2 in ServerSelectionScreen.

* Use StateStoreViewModelV2 in SoftLogoutScreen.

* Use StateStoreViewModelV2 in SettingsScreen.

* Use StateStoreViewModelV2 in DeveloperOptionsScreen.

* Use StateStoreViewModelV2 in AdvancedSettingsScreen.
2025-05-01 09:35:59 +01:00
Mauro Romito 0f53ad6724 updated SDK and improved report flow
the report flow is now based on the matrix version and the new one will only be used if the SDK checks if the server supports it.
2025-04-30 11:41:19 +02:00
Doug 58b982a8f8 Disable the composer when you don't have the power to post. (#4076) 2025-04-29 10:12:20 +01:00
Stefan Ceriu 41b18cfd52 Remove now unnecessary RoomListSummary lastMessageFormattedTimestamp 2025-04-28 18:51:13 +03:00
Stefan Ceriu 899c33a5ad Remove delivered notifications for rooms that have meantime become fully read and have messages newer than what's delivered
- this is a best effort solution to cleanup outdated notifications when using multiple clients and reading them elsewhere
2025-04-28 18:51:13 +03:00
Doug e14672e1f6 Dismiss room invite notifications when rejecting them from the home screen. (#4074) 2025-04-28 16:33:49 +01:00
Mauro Romito 8091d9c2a6 possible fix for flaky UI tests
- increased the time for the oidc selection alert check
- for the poll screen creation, in the test only we reduced the number of options to 10
2025-04-28 15:53:09 +02:00
Mauro Romito cbb509254b UI tests fix 2025-04-28 15:53:09 +02:00
Doug dac1e62e14 Remove the Learn More URL for the sliding sync proxy. (#4070) 2025-04-28 12:17:20 +01:00
Mauro 7183b0fe19 Report room and decline & block screens tweaks (#4044)
* report rom and decline and block screens tweaks

- Use the copies: "Leave room" and "Report room" everywhere, also in DMs
- Report reason in report room is now mandatory.
- Report reason in decline and block is now mandatory if the report action is set to on.
- Generic alert for failure of main API in both report room and decline and block has been added

* report room and decline and block screen previews
2025-04-22 10:44:20 +01:00
Doug 5ff9072331 Tweak the size of the new bloom to match Figma better. (#4039)
Also increase the resolution to reduce banding.
2025-04-17 14:30:33 +01:00
Doug 5ba070d4d0 Add the new bloom style under a feature flag. (#4033)
* Refactor the bloom into a modifier.

It currently depends on the home screen context but that will be removed in the future.

* Add an initial implementation of the new bloom using an image on the navigation item's appearance.

* Add a feature flag to control the new bloom.
2025-04-16 16:36:19 +01:00
Stefan Ceriu 806d676299 Introduce a TimelineItemThreadSummary object (#4032)
* Introduce a `TimelineItemThreadSummary` object to hold details about threads starting from that particular item

This patch introduces a thread summary object that will be available on main timeline messages that are the root for a given thread.
It currently provides the latest message content and sender for that thread but it will grow to provide info on the number of replies, unreads etc.

It also add a new UI component called `TimelineThreadSummaryView` that makes use of this data and is in turn used by the bubbled styler to render it in the timeline.

The rest of the PR is about refactoring on the `RoomTimelineItemFactory` so that replies and thread summaries use similar paths and builders.

* Add a feature flag for threads

* Address PR comments

* Converge on single implementation for message previews
2025-04-16 16:19:29 +03:00
Doug c5bb960234 Show internet connection warning when uploading keys on log out. (#4027)
* Show the key upload progress when waiting to log out.

Add some basic view model tests too.

* Show a network suggestion if key upload doesn't report any progress during logout.
2025-04-15 16:47:31 +01:00
Mauro Romito a6dadc1cf3 change: specific report copy for DMs 2025-04-14 15:35:08 +02:00
Doug 4f4729b8df Stop showing the canonical alias for invites in the room list. (#4020) 2025-04-14 10:42:21 +01:00
Doug a5d94a0219 Adopt the new start chat button design. (#4013)
* Update compound and handle plain to tertiary/textLink button style updates.

* Update the start chat button to use the right icon/style.

* Update preview snapshots.

* Fix remaining snapshots.
2025-04-11 17:09:57 +01:00
Doug 511c4d7bf7 Fix authentication activity indicators when the authentication server is being slow
* Fetch the OIDC login URL as part of the Server Confirmation screen.

The loading indicator would show and hide while configuring and then immediately show again while fetching the URL.

* Allow the OIDCAuthenticationPresenter to show its own errors.

We no longer need to present errors in the authentication flow coordinator.
2025-04-11 11:22:39 +01:00
Doug 1557054753 Simplify authentication logic
matrix.org now supports MAS so we don't need the web registration helper anymore.
2025-04-11 11:22:39 +01:00
Mauro Romito b2c647b1af change: decline and block design tweaks 2025-04-11 11:45:44 +02:00
Mauro Romito 88397792cf change: stricter private timeline media visibility 2025-04-11 10:12:25 +02:00
Mauro Romito 2990b7b890 external keyboard support for PIN input 2025-04-11 10:10:55 +02:00
Stefan Ceriu 83136af7c4 Bump the SDK and adopt the new MsgLike timeline item types (#4000)
* Bump the RustSDK to v25.04.09

* Adopt new MsgLike based timeline item structure.

* Move the `replyDetails` and `isThreaded` to the `RoomTimelineItemProperties`

* Restructure the TimelineItemFactory

* Fix line length warning

* Rename `msgLikeContent` to `messageLikeContent` wherever possible.

* Move the `EventTimelineItem` mocks to the SDK mocks folder.
2025-04-10 14:04:16 +03:00