Commit Graph

629 Commits

Author SHA1 Message Date
Benoit Marty
37f10ced4a Merge pull request #5645 from element-hq/feature/bma/mutliAccountNotification
Improve rendering notification for multi account
2025-11-05 18:08:20 +01:00
Benoit Marty
7d696d542c Merge pull request #5677 from element-hq/feature/bma/loadingVerificationAction
Make sure we know the session verification state before showing the options to verify the session
2025-11-04 16:32:17 +01:00
Benoit Marty
e96cd9e28f Merge remote-tracking branch 'origin/develop' into feature/bma/mutliAccountNotification 2025-11-04 16:20:42 +01:00
Jorge Martin Espinosa
015b497d5a Use the SDK Client to check whether a homeserver is compatible (#5664)
* Use the SDK `Client` to check whether a HS is compatible

* Remove usage of unused `WellKnown`, keep `ElementWellKnown`

* Make `HomeServerLoginCompatibilityChecker.check` return `true/false` values to distinguish non-valid homeservers from a failed check

* Use `inMemoryStore` and `serverNameOrHomeserverUrl`

* Do some cleanup of `isValid` and `isWellknownValid`

* Make the debounce for starting the search a bit higher, as checking for the homeservers seems more resource-intensive now
2025-11-04 15:43:00 +01:00
Benoit Marty
a2b6561009 Make sure we know the session verification state before showing the option to verify the session. #5521 2025-11-04 12:19:09 +01:00
Benoit Marty
031ca4f333 Notification: show userId in notification when several accounts are configured. 2025-10-31 09:25:01 +01:00
Jorge Martin Espinosa
1f5f6896c6 Fix marking a room as read re-instantiates its timeline (#5628)
* Add `Timeline.markAsRead` to avoid reinstantiating the timeline using `Room.markAsRead`

* Mark as read when exiting the room screen, destroy the timeline when fully closed

* Ensure `MarkAsFullyReadAndExit` event can only be processed once

* Fix `DelayedVisibility` not being displayed in previews
2025-10-30 08:39:06 +01:00
Benoit Marty
e9cfce915a Extract code for forwarding Event to its own modules. 2025-10-28 15:42:39 +01:00
Benoit Marty
d8129e72bc Let notifications uses the brandColor. 2025-10-24 17:04:48 +02:00
Jorge Martin Espinosa
7491b5479a Allow uploading notification push rules in bug reports (#5538)
* Allow uploading push rules in bug reports

* Improve bug report screen previews

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-10-15 11:45:04 +02:00
Benoit Marty
e6cd8d5fb5 Remove useless Immutable annotation 2025-10-09 18:22:33 +02:00
Benoit Marty
8f703c2aa7 Rename RoomDirectoryList.State to RoomDirectoryList.SearchResult to avoid this class to be checked for stability. 2025-10-09 18:22:27 +02:00
Benoit Marty
da78386d25 Add Konsist test to check that toPersistentList() is not used.
Same for `toPersistentSet()` and `toPersistentMap()`.
Fix existing issues.
2025-10-08 15:51:18 +02:00
Benoit Marty
40e3ba8d56 Use base type. 2025-10-06 15:13:44 +02:00
Benoit Marty
cabeb19ae1 Naming convention and use MatrixMediaLoader instead of MatrixClient for Coil factories. 2025-10-06 15:13:41 +02:00
Benoit Marty
67c6a1bd5f Let MatrixClient exposes val instead of fun for the services. 2025-10-06 15:12:35 +02:00
Hubert Chathi
7c61c70b62 Only offer to verify if a cross-signed device is available (#5433)
* Only offer to verify if a cross-signed device is available

* Fix tests

* use the right exception mapper

* adjust flag name and logic in ChooseSelfVerificationState

* add comment

* switch order of states to match previous logic
2025-10-06 12:40:52 +02:00
Benoit Marty
acc18fc081 Merge pull request #5451 from element-hq/feature/bma/spaceAnnoucement
Space annoucement
2025-10-03 16:48:49 +02:00
Benoit Marty
a39f3212e2 Add unit test on SpaceAnnouncementPresenter 2025-10-03 09:54:42 +02:00
Benoit Marty
c36577889d Leave space: use the SDK API. 2025-10-02 17:26:02 +02:00
ganfra
388cb31700 misc (space) : ensure SpaceRoomList is destroyed 2025-10-01 10:49:35 +02:00
Jorge Martin Espinosa
80e869c93e Follow permalinks to and from threads (#5414)
* Implement navigation to event inside a thread when a permalink is used

* Fix permalink navigation in threads to rooms

* Fix navigating to a different thread from a permalink in an existing thread

* Fix tests

* Add missing tests for thread navigation

* Reduce number of diff between ThreadedMessagesNode.kt and MessagesNode.kt

* Navigate back to the room when a link to the current room is clicked in a thread.

---------

Co-authored-by: Benoit Marty <benoitm@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-09-30 09:18:13 +00:00
Benoit Marty
bc465d724a Leave space - Add screen to leave a space. 2025-09-26 14:14:00 +02:00
Jorge Martin Espinosa
f1cd80ede8 Use shared recent emoji reactions from account data (#5402)
* Use shared recent emoji reactions from account data

- Add `AddRecentEmoji` and `GetRecentEmojis` use cases to avoid injecting the whole `MatrixClient` for just one of these operations.
- Update the UI and logic of the emoji picker and message context menu to include the recent emojis.
- Add `CoroutineDispatchers.Default` with the defaults coroutines to use in the app for ease of use.

* Instead of replacing suggested emojis, concatenate recent ones removing duplicates

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-09-26 11:04:34 +00:00
ganfra
718b4dd11b sdk (space) : use the new space/spaceUpdate api from space list 2025-09-24 12:48:24 +02:00
Benoit Marty
461565fc9c Merge branch 'develop' into feature/fga/join_space 2025-09-24 11:20:17 +02:00
Jorge Martin Espinosa
3a3dce150a Add thread decoration with latest event details (#5355)
* Add thread decoration with latest event details
* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-09-23 14:57:50 +00:00
ganfra
5cda6730c4 Merge branch 'develop' into feature/fga/join_space 2025-09-19 16:35:55 +02:00
Benoit Marty
37d036cb12 Remove MatrixAuthenticationService.getLatestSessionId() 2025-09-19 10:57:26 +02:00
Benoit Marty
d9755234dc Remove MatrixAuthenticationService.loggedInStateFlow() 2025-09-19 10:57:20 +02:00
Benoit Marty
595cec7d33 Merge branch 'develop' into feature/bma/testEntryPoint 2025-09-18 18:58:30 +02:00
Benoit Marty
6ad8be2b12 Merge pull request #5306 from element-hq/feature/bma/removeDeadCode
Remove dead code
2025-09-18 18:11:06 +02:00
Benoit Marty
bd51ad3464 Cleanup 2025-09-16 14:38:32 +02:00
Valere Fedronic
2ca0afff3a Call: MSC4310 sending RTC decline event and listening for Decline from other sessions
MSC4310 RTC decline event support
2025-09-16 10:25:17 +02:00
ganfra
f675c95740 feature (space) : start logic for joining space 2025-09-15 16:26:54 +02:00
Jorge Martin Espinosa
15a99a5f0c Upgrade Rust SDK bindings to v25.09.15 (#5353)
* Upgrade Rust SDK bindings to `v25.09.15`:

This contains important changes to the APIs used to build the EC widget.

* Use the new `intent` parameter correctly, by calculating locally its behaviour based on whether the room is a DM and there is an ongoing call or not.

Using just the `intent` parameter is our end goal, but sadly this is not fully supported by the current EC embedded `v0.15.0`, so we need to add a workaround using the `skipLobby` and `preload` parameters.
2025-09-15 15:15:10 +02:00
Benoit Marty
06e7bc1604 Space list (#5320)
* feature(spaces) : introduce SpaceRoomList matrix api

* feature (space) : extract SpaceRoomItemView

* feature(spaces) : start introducing SpaceScreen

* feature (space) : iterate on space list (and space screen)

* feature (space) : add space cache and navigation to sub space/room

* feature (space) : display top bar title

* Code cleanup, remove dead code and fix compilation issue

* More compilation fixes.

* Update screenshots

* Fix test compilation issues.

* Introduce MatrixClient.rememberHideInvitesAvatar() extension to reduce code duplication.

* Add test on SpacePresenter

* Add test on SpaceRoomCache and fix implementation

* Iterate on SpaceRoomCache thanks to SpaceRoomCacheTest

* Add UT on SpaceListUpdateProcessor

* Fix quality issue.

* Add tests on RustSpaceRoomList

---------

Co-authored-by: ganfra <francoisg@matrix.org>
Co-authored-by: ElementBot <android@element.io>
2025-09-11 17:29:15 +02:00
Valere
4e8e355f27 Call: RTC decline event support 2025-09-11 13:33:37 +02:00
Benoit Marty
2cc4bd5820 Fix quality issue. 2025-09-11 10:15:23 +02:00
Benoit Marty
cd830266ca normalizedPowerLevel has been removed from the SDK (and was not used). 2025-09-11 08:52:02 +02:00
Benoit Marty
884231e1e1 Add test on SpacePresenter 2025-09-10 16:30:21 +02:00
Benoit Marty
c6b522e5ad Fix test compilation issues. 2025-09-10 15:48:07 +02:00
Benoit Marty
a570b0d4ff Remove unused MatrixClient.availableSlidingSyncVersions(). 2025-09-09 15:19:19 +02:00
Benoit Marty
dab9e374e6 Add tests on HomeSpacesPresenter 2025-09-05 17:09:42 +02:00
Jorge Martin Espinosa
2eacce47c0 Reload member list after moderation actions (#5268)
* Reload member list after moderation actions

The previous `runActionAndWaitForMembershipChange` logic wasn't really doing anything, as the modified flow was never used.

* Make sure we always set the value in the member list state flow, even if the underlying coroutine scope is no longer there.

With `emit`, the `Ready` state was not emitted if the member list was loaded way too fast.
2025-09-04 12:56:46 +00:00
Jorge Martin Espinosa
59a8aaebff Add shortcut suggestions for rooms, remove then when leaving (#5180)
* Report shortcut usage for outgoing messages

This patch adds support for creating and pushing dynamic
long-lived shortcuts for outgoing messages. This together
with an existing reference to the roomId used by the
shortcuts as an identifer allows conversations to be
prioritized.

See https://developer.android.com/training/sharing/direct-share-targets#report-usage-outgoing

* Simplify how to get the other user in a DM room

* Add initial avatar icons to shortcuts

* Remove room shortcuts when they're no longer joined

* Try using API 33 for the new tests. They worked locally with API 30, so it's weird the CI asks for a higher API version.

* Add observers for the pin code and session logout states. With this we can prevent new shortcuts from being created and remove existing ones when needed.

* Wrap all calls to `ShortcutManagerCompat` with `runCatchingExceptions` to avoid crashes

* Make `DefaultNotificationConversationService` a singleton.

---------

Co-authored-by: networkException <git@nwex.de>
Co-authored-by: ElementBot <android@element.io>
2025-08-19 16:02:51 +02:00
Jorge Martin Espinosa
285066c206 Threads - first iteration (#5165)
* Initial threads support: parse `ThreadSummary`.

Replace several `isThreaded` values with `EventThreadInfo`, which contains the info about the event either being the root of a thread or part of it.

* Add `Threaded` timeline mode

* Add a `liveTimeline` parameter to `TimelineController`'s  constructor. This way we can customise which timeline will be used as the 'live' one. Also add `@LiveTimeline` DI qualifier for the actual live timeline of the room.

* Create `ThreadedMessagesNode`. Allow opening a thread in a separate screen.

* Add the callbacks for the list menu actions - even if they're the wrong ones and will send the data to the room instead

* Send attachments and location in threads

* Fix polls in threads, add support for sending voice messages in threads

* Display thread summaries only when the feature flag is enabled

* Use 'Reply' instead of 'Reply in thread' when in threaded timeline mode

* Remove incorrect usage of `Timeline` in `MessageComposerPresenter`. This led to replies to threaded events not appearing as actual replies.

---------

Co-authored-by: ElementBot <android@element.io>
2025-08-19 13:35:48 +00:00
renovate[bot]
aac9642159 Update dependency org.matrix.rustcomponents:sdk-android to v25.8.18 (#5182)
* Update dependency org.matrix.rustcomponents:sdk-android to v25.8.18

* Fix broken API changes:
- The send queue usage is now mandatory.
- The media upload progress now comes back in the send queue state (this still hasn't been applied to the UI in the timeline).

* Update screenshots
---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
Co-authored-by: ElementBot <android@element.io>
2025-08-18 16:41:14 +02:00
Jorge Martin Espinosa
a170d80cb3 Add media file limit size warning and media quality selection (#5131)
* Add `VideoCompressorPreset` enum

This represents the different compression presets used for processing videos before uploading them

* Add `VideoCompressorHelper` util class to calculate the scaled output size of the video given an input size and its optimal bitrate

Also add `MediaOptimizationConfig` which will be used to decide how to apply compression in `MediaPreProcessor`

* Add `RustMatrixClient.getMaxFileUploadSize()` function and `MaxUploadSizeProvider` so we can import only this functionality into other components

* Try preloading the max file upload size the first time we get network connectivity - it's a best effort

This should help ensure we'll have this value available later, even if we still need to load it asynchronously.

* Split the `compressMedia` preference into `compressImages` and `compressMediaPreset`

* Modify the media processing parts to use the new classes and utils

* Add `MediaOptimizationSelectorPresenter`, which will retrieve the compression values and the max file upload size, also estimating the compressed video file sizes if needed.

* Add a feature flag to allow selecting the media upload quality per upload

* Integrate the previous changes with the attachments preview screen

Add strings from localazy too.

* Adapt the rest of the app calls to upload media to using the media optimization configs

* Allow modifying the default compression values in advanced settings, based on the feature flag value

* Pass the `fileSize` in `MediaUploadInfo` too, to be able to check it against the `maxUploadSize`

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-08-11 17:22:46 +02:00
Benoit Marty
b1a48ec863 Merge pull request #5126 from element-hq/feature/bma/redirectToElementPro
Redirect FOSS user to Element Pro according to element .well-known file
2025-08-08 09:38:59 +02:00