Commit Graph

431 Commits

Author SHA1 Message Date
Mauro Romito 155b47e849 tombstoned and upgraded rooms implementation
added tests

tombstoned room avatar
2025-06-06 10:49:29 +02: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
Stefan Ceriu 972084aaf7 Rename the TimelineProvider to TimelineItemProvider 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 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
Stefan Ceriu 10fb2b5dda Add mechanism for opening up a threaded timeline 2025-05-20 12:18:55 +03: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 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
Stefan Ceriu c33a164354 Remove unused removeDeliveredInviteNotifications NotificationManager method 2025-04-17 15:24:12 +03:00
Doug 8c9773e4de Refactor SecureBackupControllerListener into SDKListener and use it everywhere. (#4030) 2025-04-16 08:36:57 +01: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
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 d92fecdc7e feat: decline and block screen
fix

improvement

fix conflict

fix tests

tests
2025-04-07 18:52:56 +02:00
Mauro Romito 2ee5c1b403 feat: report a room
updated tests

updated tests

added a feature flag to report room

removed delay

rename
2025-04-07 17:17:08 +02:00
Mauro bbfc6c1e17 Add alerts with reason for kick and ban (#3967)
* feat: added alerts with reason for kick and ban

in the room members list screen

* fix tests
2025-04-01 16:06:40 +00:00
Stefan Ceriu 901c833c40 Bump the RustSDK to v25.03.31
- adopt new async throwing methods
- use the sdk side TimelineStart virtual timeline item
- remove async from `directRoomForUserID` as it's not async on the rust side
- remove async from `retryDecryption` as it's spawning not blocking on the rust side
2025-04-01 13:12:29 +03:00
Doug 5e50823223 Allow the services that are configured by secrets to be disabled. (#3961)
* Make the map tiler key optional.

* Make the bug report URL optional.

* Make the sentry URL optional.

* Make the analytics configuration optional and handle consent taking Sentry into account.

* Stop prompting users to report crashes when Sentry is disabled.
2025-04-01 09:24:12 +01:00
Mauro Romito 98a95342d0 EC update and improvements
Use .startCall intent, and always pass rageshakeURL to the widget

Updated EC to 0.9.0-rc.4

rageshakeURL is now a parameter
2025-03-26 13:13:28 +01:00
Mauro Romito cfd4392837 updated the SDK to 25.03.24 2025-03-25 12:17:11 +01:00
Stefan Ceriu 07e96115ce SDK update (#3891)
* 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)
2025-03-13 11:17:37 +02:00
Mauro Romito 7373eabffb refactored the ClientProxy to:
- throw an error during the init
- to have its init directly instantiate the sync service and the providers

Update ElementX/Sources/Services/UserSession/UserSessionStore.swift

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

renamed
2025-03-06 14:13:55 +01:00
Stefan Ceriu 4d34a1ed56 Bump the RustSDK to v25.03.05
- adopt the new timeline configuration which now exposes read receipts tracking. For now it should be set to `false` for all timelines except the live one, which still gets configured properly on the rust side through `init_timeline`. Eventually we will converge on this configuration API for all of them.
- also adopt the new rust side cache clearing method and remove our own
2025-03-05 14:24:44 +02:00
Mauro 319441d527 Use a static room summary provider to resolve room summaries through id and aliases (#3863)
* trying to debug why sometimes the value

is missing even if it appears in the room list

* static room provider implementation

* set the page size through the init

* removed reset filters on .cancel

since using the sop function is safer
2025-03-04 14:08:15 +01:00
Mauro a2242c63e2 Render Room and Message Pills (#3809)
* added a way to render the room and the message

pills, but is WIP

* permalinks now get converted into pills!

* fixed an issue where room address mentions

were not adding a URL properly but a string

* updated tests

* c

* Revert "c"

This reverts commit 5c80252fa23dba7e4d44f2a07fbf1e9500e37c82.

* updated tests

* more tests

* created APIs to get a specific RoomSummary

given the id or the alias

* small mention builder improvement

* pr suggestions
2025-02-25 13:46:01 +00:00
Stefan Ceriu 5e90f67a91 Bump the RustSDK to v25.2.25, address breaking changes from matrix-org/matrix-rust-sdk/pull/4674 2025-02-25 12:40:56 +02:00
Doug 8c07ee35c4 Update the SDK.
Handles changes that removed support for the sliding sync proxy.
2025-02-18 11:55:20 +00:00
Stefan Ceriu f77faee981 User verification state indicators (#3793)
* Introduce a `UserIdentityProxy` and have it combine upstream methods into an easy to digest  `UserIdentityVerificationState`. Use it in a dedicated `VerificationBadge` UI component

* Show a DMs counterpart verification state in the room header

* Show a warning on the room details `People` entry when there are identity verification state violations on any of the members.

* Show verification badges in the room member list

* Show a withdraw verification section on the room member details for users that have pinning violations.

* Remove the verification section from the profile screen as there's no reliable way to keep it up to date
- the underlying Rust SDK Olm Machine can be rebuilt without notice which would break any existing user identity change streams.

* Update preview test snapshots
2025-02-18 08:37:34 +02:00
Vickcoo 4b43d901f8 Fix message completion trigger to work anywhere in the message (#3696)
* Fix message completion trigger to work anywhere in the message

* Add tests for display suggestion in difference message positions

* Fix suggestion trigger could support multiple mention symbol

* Remove optional parameter type and tweak argument name to hide

* Optimize the suggestions trigger using regex

* Fix the cursor at wrong position after selected suggestion

* Modify the rawSuggestionText pass data in right way

* Modify mention symbol to use regex type

* Update ElementX/Sources/Screens/RoomScreen/ComposerToolbar/CompletionSuggestionService.swift

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

* Update generated mock

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2025-02-13 15:13:09 +00:00
Doug f6a1d38972 Log whether a notification is expected to make a noise. (#3782)
* Log whether a notification is expected to make a noise.

* Also log the system notification sound setting too.
2025-02-11 09:59:46 +00:00
Stefan Ceriu 8680d8437b Add support for initiating and responding to user verification requests (#3759) 2025-02-10 18:07:11 +00:00
Mauro f86a5a2bb9 Added the banned room proxy (#3744)
* added the banned room proxy

and a way to have a consistent loading + a retry alert

* trailing closure

* indent a comment

* push package.resolved

* updated test case
2025-02-06 10:15:36 +01:00
Mauro 3839025caa Knocking feature polishing part 2 (#3738)
* improved implementation of the unknown state

* forget button in the banned state

* error handling for forbidden access

* added the forget function

fixed DMs, and updated preview tests

* removed banned room proxy

* code polishing and test improvement
2025-02-05 14:48:24 +01:00
Doug cfaa1b455a Use the new preview screen when tapping media on the room and pinned events screens. (#3736)
* Use the new TimelineMediaPreview modifier on the room and pinned timeline screens.

* Use the same presentation logic for all timeline media previews.

* Fix a bug with the detection of the timeline end.

* Send pagination requests from the media preview screen.

* Add SwiftLint to the Danger workflow (it is no longer installed on the runner).

* Put SwiftLint back on all of the GitHub runners too.

* Set the function_parameter_count lint rule to 10.

* Make sure to clean-up any previews when the coordinator is done.

* Handle the viewInRoomTimeline action more appropriately.
2025-02-05 13:27:23 +00:00
Doug bad4a8f9c8 Refactor Rust timeline identifiers into our own. (#3731)
* Refactor eventOrTransactionID.

* Refactor uniqueID.
2025-02-04 09:50:46 +00:00
Element CI 7f04c8841f added an alert before creating a new DM 2025-02-03 16:44:12 +01:00
Doug d195e603c9 RoomTimeline… refactor (drop the Room). (#3728)
* Add the timeline controller factory to the timeline view model.

In preparation for building a timeline to swipe through media in QuickLook.

* Refactor RoomTimelineControllerFactory.

* Refactor RoomTimelineController.

* Refactor RoomTimelineProvider.
2025-02-03 14:14:01 +00:00
Stefan Ceriu 8577f53613 Refactor the JoinRoom screen to take advantage of newer APIs and support more joinRule/membership combinations (i.e. invite required, restricted, banned) (#3685)
- expose the full RoomPreview and RoomMembershipDetails through their own proxies
- implement standard mocks for all the different combinations
- converge on a single room info provider
- rebuild all the previews
- prioritise the preview data over the room one.
2025-01-20 19:07:11 +02:00
Valere f20847f62b Warn and block sending on verification violation (#3679)
* feat(crypto): Warn and block sending on verification violation

* fixup: Fix ComposerToolbar previews

* fixup! add ComposerToolBarViewModelTests for canSend

* add new preview tests for verification violations

* Use `deferFulfillment`s in the unit tests.

---------

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
2025-01-20 18:29:34 +02:00
Stefan Ceriu 0bcc59ae0a Bump the RustSDK to v25.01.15 and fix (most) concurrency sendability warnings in the generated mocks. 2025-01-15 14:59:54 +02:00
Mauro e3ad925285 Security and privacy part 2 (#3637)
* handling the history visibility flag

* better logic to handle visibility

* better handling of the visibility options state

* added some copies, and the public room directory

visibility state

* completed the UI

added also the preview tests

* improved the handling of the directory visibility

* added the space users case

and improved handling of the access -> vsibility reaction. Also added a simple error handling for the public directory toggle

* added the edit room address view

but is missing its full implementation

* implement the UI for the edit room address screen

* implemented error checking

when editing the address

* updated preview tests and improved code

* typo fix

* Fix various issues after rebasing.

* Fix build errors and broken snapshot tests

* Adopt latest room privacy and canonical alias setting APIs

* Add support for creating and editing the room's alias.

* Add support for saving room privacy setting changes.

* Fix room alias screen snapshot tests following recent changes.

---------

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
2025-01-15 11:50:08 +02:00
Stefan Ceriu 435dfb8e46 Automatically retry decryptions in the active room when the app becomes active again just in case the NSE received keys we're not aware of (#3628) 2024-12-18 11:10:56 +02:00
Doug 2a865ce5bf Implement the save action when previewing media. (#3630)
* Implement the save action on the media preview.

* Update Compound and use the correct icon.

Also fixes an icon that has been renamed.

* Update the add to photo library usage description to match the designs.

* PR comments.
2024-12-17 16:35:51 +00:00
Mauro 45a630dd85 Implement Knock Logic (#3573)
* WIP RequestToJoin struct

* implemented the logic to display the cells

* knock request banner accept flow

* mark all knocks as seen implemented

* details logic

* implemented accept, decline and ban in the list

* added a loader and modified the stacked view

of the banner

* pr suggestions

* updated naming and loading strings

* added the initial loading state

improved code and the tests

* updated a string that has changed

* code improvement

* tests for the room screen view model

* room details tests

and improved the knock requests tests for the room screen

* knock requests list tests

* added error state alerts with retry

* struct has been renamed on the sdk

so I renamed it also on the app side

* update SDK
2024-12-16 15:32:45 +01:00
Stefan Ceriu caaa89af62 Media gallery - part 1(#3588)
* Introduce a `MediaEventsTimelineFlowCoordinator`
* Update SDK API and architecture
* Add a feature flag, add translations
* Move the media events timeline presentation under the room flow coordinator state machine
* Rename `TimelineViewState.timelineViewState` of type `TimelineState` to `timelineState`
* Enabled SwiftLint's `trailing_closure` rule and fix the warnings.
2024-12-06 16:58:14 +02:00
Doug 4187155159 Enable local echoes for media uploads for all builds. (#3579)
* Enable local echoes for media uploads for all builds.

* Update a string.
2024-12-03 11:28:21 +00:00
Doug 4869dcfe97 Wait until the sync has stopped before marking the task as complete. (#3564) 2024-11-28 17:30:07 +00:00
Doug 751be7b3a7 Update the SDK. (#3565)
* Update the SDK.

* Add mockMXC URLs to fix all the crashes during tests.

* Refactor Voice Messages to not use a MediaSource for local files.
2024-11-28 08:34:38 +00:00
Doug 7e1476d973 Add support for adding/editing/removing media captions. (#3547)
* Add support for editing media captions.

* Add composer snapshots.

* PR comment.
2024-11-21 18:18:27 +00:00
Mauro bce3b3a385 using roomPreview API for invited rooms (#3530)
* using roomPreview for invited rooms

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

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

* improved code

* fix, but requires a SDK PR

* update sdk

* package resolved

* fixed the tests

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2024-11-19 19:23:06 +00:00