Commit Graph

551 Commits

Author SHA1 Message Date
Mauro
cbeaaf02bb Session verification UI tests update (#5120)
session verification tests UI tests update
2026-02-18 10:57:04 +01:00
Doug
9b5099bd90 Re-write the space flow state machine configuration and cover it more in UI tests. (#5098)
* Use the old state machine configuration style.

* Test starting the space settings flow in UI tests.

* Test starting the create space room flow in UI tests.
2026-02-12 13:19:20 +00:00
Doug
6dc66ec777 Remove the global UserIndicatorController.alertInfo, replacing it with local alertInfo usage. (#5087) 2026-02-10 17:16:11 +00:00
Doug
77496934ce Use our own JoinRule type which doesn't include the reserved .private case. (#5056)
* Stop using Rust's JoinRule.private in mocks.

It isn't used anywhere else (see MSC4413 for more context).

* Use our own JoinRule (and AllowRule) types.

* Update ElementX/Sources/Services/Room/JoinRule.swift

Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>

---------

Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
2026-02-06 13:54:53 +00:00
Skye Elliot
fdcf14f282 Display an icon in the room header for rooms with shared history (#5016)
* feat: Display an icon in the room header for rooms with shared history

* fix: Apply suggestions from code review

- Simplifies `isRoomHistoryShared` expressions using type inferrence.
- Adds failure messages to unit test.

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

* fix: Remove extension method in favour of field on configuration.

* fix: Distinguish between `shared` and `worldReadable` icons.

* refactor: Use `RoomHistorySharingState` enum with extension methods

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2026-01-30 13:11:10 +00:00
Mauro Romito
ff4e90465e implemented the logic to transfer ownership from a space 2026-01-28 15:42:17 +01:00
Stefan Ceriu
04053ae69b Update files following swiftformat upgrade 2026-01-27 12:50:57 +02:00
Doug
cdf615ae5f Remove the protocol for SpaceServiceRoom given its a struct type. (#5000)
* Remove the protocol for SpaceServiceRoom given its a struct type.

* Fix a few missed mocks in the unit tests.
2026-01-26 09:45:46 +00:00
Doug
06e1a71098 Make sure the selected/available rooms are updated when adding space children fails part way through. (#4997)
* Make sure the available rooms are updated if adding space children fails part way through.

* Additionally handle the case where removing rooms fails part way through.
2026-01-23 17:36:26 +00:00
Mauro Romito
80227edb04 updated the SDK and included the fix for leaving a space when the last owner of a non empty space 2026-01-23 17:49:07 +01:00
Mauro Romito
24f1c0c27f Implemented adding the room to the space after selection, and the editableSpace proxied API. Also updated and added tests. 2026-01-22 16:40:25 +01:00
Doug
ed892fee94 Add the empty state to SpaceScreen. (#4985)
* Rename PaginationState.timelineEndReached to PaginationState.endReached.

* Rename PaginationState to TimelinePaginationState.

Also renames PaginationStatus to PaginationState so that a TimelinePaginationState consists of the forward and backward pagination states.

* Add the empty state to SpaceScreen.

Only has 1 of the 2 buttons for now.
2026-01-22 12:37:34 +00:00
Stefan Ceriu
d1f1a598d5 Space filters (#4977)
* Add support for SpaceFilters on the SpaceServiceProxy level and a screen that renders them

* Add aliases to a couple of space room mocks

* Update translations and related snapshots

* Add a feature flag for space filters

* Add a new room summary provider filter that takes a list of room identifiers next to the normal state filters

This will take the SpaceFilter's descendants and combine it with the normal filters to reduce the rooms shown

* Add a new space filter button to the home screen and link it to the SpaceFiltersScreen and the actual RoomSummaryProvider room list filters

* Bump the RustSDK to v26.01.20-2 for SpaceFilter support.

* Add a cancellation button to the space filters screen

* Make the filter presentation mode liquidy, move the sheet to within the home screen.

* Address PR comments
2026-01-21 20:19:39 +00:00
Doug
2720791dc1 Replace a debugging visibility check with the real condition. (#4982) 2026-01-21 17:16:23 +00:00
Doug
e6efdf0e82 Include the Members and Add Rooms screens in the spaces UI tests. (#4981)
* Expand the space flow UI tests to include the add rooms screen.

Also fixes some failures in these tests due to the room/space title now being a button.

* Expand the space flow UI tests to include the space members screen.

* Reset AppSettings before running preview tests.
2026-01-21 15:24:54 +00:00
Doug
8da856e620 Add space management to the flows. (#4978)
* Add the menu entries to add/remove rooms to/from a space.

* Add a user indicator to SpaceAddRoomsScreen.

* Reset the SpaceRoomListProxy after adding/removing any children.

* Calm the animations down a bit when entering EditMode on the SpaceScreen.
2026-01-21 12:46:02 +00:00
Doug
b009b8ed66 Add the initial implementation for managing spaces. (#4963)
This isn't hooked up into the flows yet.
2026-01-16 15:29:27 +00:00
Doug
9b03ceb7c6 Implement the SpaceAddRoomsScreen. (#4951)
* Update proxies ready for adding rooms to a space.

- ClientProxy.recentlyVisitedRooms to take a filter and to return room proxies.
- Expose SpaceServiceProxy.addChildToSpace.

* Implement the SpaceAddRoomsScreen.

* Fix the designs of the selected carousels.

Add more snapshot tests for inviting users.

* Fix for screen using wrong avatar size.
2026-01-14 12:07:57 +00:00
Doug
a19c7fff1f Rename SpaceRoomProxy to SpaceServiceRoom and stop proxying the struct. (#4952)
* Rename SpaceRoomProxy to SpaceServiceRoom.

The underlying type is a struct, we don't need to proxy it.

* Actually stop proxying the SpaceRoom.
2026-01-13 12:00:20 +00:00
Mauro
2b28b70871 Create room redesign and refactor (#4942) 2026-01-12 17:49:31 +00:00
Doug
15eae621b2 Add tests for linking a new device. (#4934)
* Replace GrantLoginWithQrCodeHandlerSDKMock with LinkNewDeviceServiceMock.

Add tests for all initial states on the QRCodeLoginScreen.

* Add tests for linking both mobile and desktop devices.

* Add UI tests for linking a new device.

* Don't show the Link Desktop Computer button when running on macOS.

This mirrors the decision to hide the Sign In With QR Code button on the start screen.
2026-01-09 13:10:14 +00:00
Skye Elliot
9fed4f30b3 Bump the Rust SDK to v26.01.06 (#4933) 2026-01-08 10:40:00 +00:00
Doug
7c839efffc Add support for linking new devices in the QRCodeLoginScreen. (#4891)
* Adds the remaining parts for showing/scanning a QR code to link a new device.

* Refactor the QRCodeLoginService to work the same way as the LinkNewDeviceService.
2026-01-07 12:18:39 +00:00
Doug
a78a923b0d Add a dedicated target for SDK mocks to avoid type name conflicts on the generated code. 2026-01-06 10:57:37 +00:00
Doug
9304c3cc65 Refactor SpaceServiceProxy.joinedSpaces to topLevelSpaces. 2026-01-06 10:57:37 +00:00
Doug
5d57b21222 Update the SDK and handle the API breaks. 2026-01-06 10:57:37 +00:00
Stefan Ceriu
79b8db8db2 Display the store sizes under the developer options menu 2025-12-19 11:12:36 +02:00
Stefan Ceriu
2880ee9135 Perform client store optimizations when migrating versions. 2025-12-19 11:12:36 +02:00
Mauro Romito
b08d4c9457 fix for leaving a space with no joined rooms showing the incorrect subtitle 2025-12-18 13:21:01 +01:00
Doug
8df57abc1e Add a service and flow coordinator for the LinkNewDevice feature. (#4859)
* Add a LinkNewDeviceService that exposes the SDK's grant QR code login methods.

* Add a flow coordinator for linking a new device.

Changes the presentation too.
2025-12-15 14:44:26 +00:00
Mauro Romito
df742ea53d handle the case where a non parent joined space is already available in the existing restricted join rule 2025-12-12 12:13:58 +01:00
Doug
fe9aa48aab Add a Link New Device screen (behind a feature flag). (#4811) 2025-12-11 11:45:23 +00:00
Stefan Ceriu
5d12cf9f7e Bump the RustSDK to v25.12.09 2025-12-09 21:51:32 +02:00
Stefan Ceriu
bbfe9b6634 Bump the RustSDK to v25.12.07 2025-12-07 12:39:00 +02:00
Mauro Romito
cfbc68f4f7 implemented the UI to manage authorized spaces 2025-12-02 18:17:16 +01:00
Doug
3ef7ad4c4d Add a specific notification body for space invites. (#4808) 2025-12-02 17:07:03 +00:00
Doug
5614564600 Fix missing read receipts in the timeline and edits in the room list. (#4807)
* Update the enterprise submodule.

* Update the SDK.
2025-12-02 15:49:23 +00:00
Doug
3612a8d413 Add the same unsaved changes alerts that Android has. (#4803)
* Add an alert to Discard or Save when there are unsaved changes on the RoomDetailsEditScreen.

* Add an alert to Discard or Save when there are unsaved changes on the UserDetailsEditScreen.

* Add an alert to Discard or Save when there are unsaved changes on the SecurityAndPrivacyScreen.

* Update strings.
2025-12-01 13:02:50 +00:00
Doug
782916f03d Show the last message state in the room list. 2025-11-27 16:43:48 +00:00
Mauro Romito
66266c1223 updated existing preview tests and added a test for the single space cases
fixed a bug where was not possible to re-select the space members option with unknown spaces.

pr suggestions
2025-11-27 13:19:10 +01:00
Mauro Romito
2292f4bd4f single space access implementation
also added the copies for the single and multiple spaces selection
2025-11-27 13:19:10 +01:00
Doug
7e3efb4ce5 Adopt the new latest event API. (#4779) 2025-11-25 11:52:48 +00:00
Mauro Romito
50c07b4a40 add NSE sources to EX project to easily implement mocking and allow the code to be unit tested 2025-11-19 13:20:14 +01:00
Stefan Ceriu
c7f3e8243a Switch the ClientProxy's roomForIdentifier state publisher await to the staticRoomSummaryProvider, similar to the other methods. 2025-11-17 21:01:21 +02:00
Doug
15720558ef Silence some warnings. (#4747) 2025-11-14 16:59:54 +00:00
Mauro Romito
df28ab8d53 update SDK 2025-11-13 14:05:52 +01:00
Mauro Romito
0093dbbe31 implemented the manage space rooms permission 2025-11-13 14:05:52 +01:00
Valere Fedronic
c75353a903 MSC4075 Use expirationTS to define the call ringing window (#4652)
* Listen to call decline to stop ringing when declined from other device

* MSC4075 Use expirationTS to define the call ringing window

* Implement ElementCallService tests.

* Update acknowledgements.
2025-11-12 12:59:09 +00:00
Doug
2ff52ce785 Fix another bug where the app could crash on launch if the access token had expired. (#4733)
Updates the SDK.
2025-11-11 15:29:23 +00:00
Doug
cbcb61d8f3 Only offer to verify if a cross-signed device is available and improve the UX whilst waiting. (#4710)
* Only offer to verify if a cross-signed device is available

* Wait until we know which verification options are available before showing them.

---------

Co-authored-by: Hubert Chathi <hubertc@matrix.org>
2025-11-07 12:10:12 +00:00