Commit Graph

431 Commits

Author SHA1 Message Date
Doug f01f31954d Make the SpaceRoomListProxy publish its SpaceRoomProxy updates. (#4607)
Also removes an unused `parent` parameter that was missed when removing the parent name and includes some regenerated snapshots that were missed in the last PR.
2025-10-09 17:22:43 +01:00
Mauro Romito 40367eeec9 fixed an issue where threads would not do the initial focus and an issue where the timeline did throw an error by mistake 2025-10-09 11:15:37 +02:00
Doug cf19e30429 Use the space room name computed by the SDK. (#4589) 2025-10-07 14:33:37 +01:00
Doug c03ed528ba More space tweaks (#4584)
* Remove the room count everywhere.

* Remove the parent name from restricted spaces.
2025-10-07 10:57:53 +01:00
Doug a226c99492 Implement the flow for leaving a space. (#4568) 2025-10-03 16:37:09 +01:00
Mauro Romito c4aebc47ee pr suggestions and some code improvements 2025-10-03 10:55:27 +02:00
Mauro Romito 0288ce6b4b implemented navigation for permalinks to threads
also this handles the case where we are permalinking to non existent (or impossible to fetch) event.
2025-10-03 10:55:27 +02:00
Mauro Romito 204b7c8297 removed identifier in the UIAction for opening a URL, also added a function to get a thread root from any event 2025-09-30 18:17:05 +02:00
Doug 12dc6f42ba Add some new space properties. (#4544)
* Use the via property on SpaceRoom.

* Fall back to the canonical alias as a space room name if needs be.

* Use SpaceRoom.isDirect for computing the name/avatar.

* Pass in the parent space as a workaround for no restricted join rules.
2025-09-26 10:03:11 +01:00
Stefan Ceriu 85f2a00311 Update generated file headers after Sourcery bump. 2025-09-24 07:47:43 +03:00
Valere Fedronic 2eaad89c0f Listen to call decline to stop ringing when declined from other device (#4505)
* Listen to call decline to stop ringing when declined from other device

* use proper swift naming convention for Id/ID

* fix Force unwrapping

* fix lint

* An approach without the custom publisher.

* review: correct naming convention

* review: revert some invisible char/tab changes

* add ref to the room proxy in the closure

---------

Co-authored-by: Doug <douglase@element.io>
2025-09-18 16:11:03 +02:00
Doug 27f4c25194 Add the JoinRoomScreen into the SpaceFlowCoordinator. (#4513)
* Add the JoinRoomScreen into the SpaceFlowCoordinator.

The screen needs further work to make the join work.

* Fix the tests completing the join flow with the right action.
2025-09-17 15:12:45 +01:00
Valere Fedronic df47858e7d Element Call: Send rtc.decline event when incoming call is declined (#4499) 2025-09-16 09:14:04 +01:00
Doug c2ac60f1e6 Add support for joining rooms from a space. (#4501)
* Add support for joining rooms from a space.

Doesn't yet handle the Join button 🤔

* Handle the join button for both rooms and spaces.

Also refactor more instances of spaceRoom to spaceRoomProxy.
2025-09-11 16:41:19 +01:00
Doug 19189bec06 Add a migration to expire sync sessions so that m.space.* state is up to date. (#4482) 2025-09-09 15:35:32 +01:00
Doug 2f2e6f6226 Revert weak media provider (#4483)
* Revert "Address the real lifetime issue of the SDK's `Client` by making `Context.mediaProvider` weak. (#4466)"

This reverts commit c794144ef1.

* Better docs.
2025-09-08 17:48:58 +01:00
Doug 90504d89c8 Use the SDK's offline detection everywhere (except for restarting the sync loop). (#4472)
* Use the SDK's offline state to drive the offline indicator.

* Only use network reachability for restarting the sync loop, use the homeserver reachability for requests.

* Add a separate indicator to distinguish when the server is unreachable but the device is online.
2025-09-08 12:18:02 +00:00
Doug c794144ef1 Address the real lifetime issue of the SDK's Client by making Context.mediaProvider weak. (#4466)
This reverts commit 927aea4bfe.
2025-09-05 17:18:14 +00:00
Doug 927aea4bfe Workaround: Hold a weak reference to the SDK's Client in MediaLoader so it can be released when clearing the cache. 2025-09-03 17:39:16 +01:00
Doug 049bb7b740 Use the SDK's SpaceService, SpaceRoom and SpaceRoomList. (#4455) 2025-09-01 15:22:37 +01:00
Doug d119964d50 Space flow improvements. (#4430)
* Space flow improvements

- Use a state machine to select a space.
- Add a SpaceFlowCoordinator for recursively presenting subspaces.
- Get the spaceRoomListProxy when tapping on the space so we can indicate failures.
- Fix the total room count in SpaceListScreen.

* Refactor spaceRoom → spaceRoomProxy.

* Add a UI test for the Spaces flow.
2025-08-22 15:49:47 +01:00
Doug 3dc6d73899 Add SpaceRoomCell & Space…ProxyProtocols and use them on the SpaceListScreen. (#4404) 2025-08-13 12:06:29 +01:00
Mauro 5ab6f90863 Last Owner should edit admins, and not leave when is last (#4372) 2025-08-07 08:40:14 +00:00
Robin 514c7808e2 Delegate the sending of call notifications to Element Call (#4370)
* Stop sending call notifications manually

The Element Call widget can now assume responsibility for sending them when you start a call.

* Bump Element Call embedded package to v0.14.0

* Delegate the sending of call notifications to Element Call

* Update the SDK.

* Use 'is' prefix for boolean

---------

Co-authored-by: Doug <douglase@element.io>
2025-08-01 18:47:48 +02:00
Mauro 731d60b6e9 Restore permissions to creator and display them as owners in the list (#4369)
* restore permissions to creator and display them as owners in the list

* improved the code to use actually 5 roles in the app to distinguish a real creator from an owner
2025-07-31 16:52:55 +02:00
Mauro e70e1f36b2 SDK Update + PowerLevels API update (#4366)
* update the sdk, and updated the power levels APIs

Revert "update the sdk, and updated the power levels APIs"

This reverts commit d3b291003d2b6fd6346ef7e445af4970fda62348.

x

* pr suggestions
2025-07-30 14:42:45 +00:00
Doug 5242e7fb6c Drop support for the legacy session directory and optional store encryption.
Store encryption became mandatory in #2692
Rust's sessionPath replaced the legacy session directory in #2903
Native sliding sync migration resulted in new restoration tokens for new users in #3071 and later for all users by #3801.
2025-07-30 14:42:59 +01:00
Doug 4d365e3fd7 Remove unnecessary slidingSyncVersion calls.
It's all native now :D
2025-07-30 14:42:59 +01:00
Doug 5762e1c537 Stop showing the sliding sync proxy alert to any remaining users.
The session will simply fail to restore and the restoration token deleted.
2025-07-30 14:42:59 +01:00
Doug 75bc26d20b Use the maxUploadSize in the media upload screen. (#4359)
* Fix a bug where some files sizes were sent as 0.

* Make FileManger.sizeForItem(at:) a UInt.

The docs specifically say that FileAttributeKey.size returns an unsigned long long so I have no idea why we were returning a Double here…

* Add the maxMediaUploadSize property on ClientProxy.

* Use the maxUploadSize to set a target video size and to show a file too big error.

* Refactor media upload parameter order.
2025-07-29 12:18:53 +01:00
Stefan Ceriu bd49500fa1 Fix various new SDK breaking changes. 2025-07-24 14:55:34 +03:00
Stefan Ceriu ffe2f726e7 Interact with polls through the TimelineController as well (creation still disabled on threaded timeline as it's not yet supported by the SDK) 2025-07-24 14:55:34 +03:00
Stefan Ceriu 3fcbc8c60a Transition voice messages to the new in thread sending mechanism 2025-07-24 14:55:34 +03:00
Stefan Ceriu ed98f64a35 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 82c659f3da 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 448bc2d4e3 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
Doug de4f05f338 Update the SDK and build a client before logging in with a QR code. (#4320) 2025-07-14 13:31:06 +00:00
Doug e46165119f Use the timeline when marking a room as read (#4319)
* Forward JoinedRoomProxy.markAsRead to the timeline

The room version was building a fresh timeline even though we already had one.

* Run swiftformat 0.57.0.
2025-07-14 12:20:41 +01:00
Doug 17596f3de1 Support runtime customisation of the rageshake URL. (#4267) 2025-06-30 10:18:25 +01:00
Stefan Ceriu 46f49af930 Bump the SDK to v25.06.25; adopt the new optional RoomInfo joinRule and isPublic. 2025-06-25 17:23:22 +03:00
Stefan Ceriu 8dc389cd54 Switch to using the power levels for retrieving a user's role. 2025-06-25 17:23:22 +03:00
Stefan Ceriu de723853e3 Make the room power levels optional as they can be missing depending on what state events are requested 2025-06-25 17:23:22 +03:00
Stefan Ceriu 5ac6ec28d5 Adopt room info power levels (#4245)
* Use the newly RoomInfo published PowerLevels; update permissions at the same time as the room info and avoid unnecessary async calls.

* Introduce a RoomInfoProxyProtocol and associated mock and move away from mocked SDK RoomInfos

* Bump the SDK to v25.06.23

* Expose new non-throwing methods for checking one's own user permissions

* Fix the unit and preview tests (except the TimelineMediaPreviewDetails for which simplified snapshots were generated)

* Converge on one single implementation for computing a room's avatar.

* Fix more unit tests

* Fix the TimelineMediaPreviewDetailsView snapshot tests

This reverts commit 9b6c819e611ad2fa3de2c34a4a7aa556fc9faadd.

---------

Co-authored-by: Doug <douglase@element.io>
2025-06-24 17:48:00 +01:00
Doug 5b3e045e3c Expose isLiveKitRTCSupported on the ClientProxy. (#4238) 2025-06-23 11:21:36 +01:00
Mauro 0c8a401b4d EC Timeout if it doesn't respond after 30 seconds (#4237)
* basic implementation

* using a decodable struct to interpret the widget message

* small code refactor/improvement
2025-06-20 18:21:31 +02:00
Stefan Ceriu f522e15dac Adopt the lastest SDK APIs and refactor how we deal with user permissions.
This patch introduces a new RoomPowerLevelsProxy and its associated mock and adopts newer Rust APIs to make working with user power levels and permissions easier.
2025-06-20 18:10:45 +03:00
Stefan Ceriu eaf14eaaac Bump the SDK to v25.06.13 and add thread support to the ComposerDraftService 2025-06-13 16:56:13 +03:00
Stefan Ceriu 558cdf5be3 Add support for sending media within threads.
This patch add the `threadRootEventID` as a parameter to media sending functions and forwards the timeline thread root between various application states to the place where its needed.
The 2 missing items are Locations and Polls which currently don't have any support on the Rust side for being sent within threads. That will come in a separate PR.
2025-06-10 21:20:09 +03:00
Stefan Ceriu 21e07e164c Setup composer actions within threaded timelines. 2025-06-10 08:57:08 +03:00
Mauro Romito 4662eca9e2 added a TombstonedAvatarImage view to be used for the .tombstoned case 2025-06-06 10:49:29 +02:00