Commit Graph

867 Commits

Author SHA1 Message Date
Benoit Marty
b3ec256dfa API modules do not need to setup dependency injection.
Move the implementation to the impl modules.
2025-11-12 19:05:39 +01:00
Benoit Marty
1292da2a72 Copyright: Add Element Creations Ltd. copyright 2025-11-10 11:05:05 +01:00
Benoit Marty
b748fcc631 Copyright: Add final period 2025-11-10 10:13:41 +01:00
Benoit Marty
0a0224b586 Copyright: run command uv run license-editor --repository ../element-x-android 2025-11-10 10:09:26 +01:00
Benoit Marty
a7f3fb9c38 Avoid usage of not() and add unit tests. 2025-11-07 10:18:45 +01:00
Benoit Marty
9e8fe55a90 Improve error mapping 2025-11-07 10:08:14 +01:00
Benoit Marty
a39b675cc1 Improve error mapping 2025-11-07 09:52:04 +01:00
Benoit Marty
47f7eeff07 MatrixHomeServerDetails does not need to be Parcelable 2025-11-06 14:32:00 +01:00
Benoit Marty
6d252c0b20 MatrixAuthenticationService: remove fun getHomeserverDetails(): StateFlow<MatrixHomeServerDetails?>. The MatrixHomeServerDetails are now return by setHomeserver 2025-11-06 12:22:48 +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
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
Jorge Martin Espinosa
45b5783b23 Display only valid emojis in recent emoji list (#5612)
* Create `:libraries:recentemojis` and move `AddRecentEmoji` and `GetRecentEmojis` there

- Make sure `GetRecentEmojis` won't return duplicate or invalid emojis.
- `ActionListPresenter` now handles merging suggested and recent emojis, not `ActionListView`.
2025-10-30 15:27:51 +00:00
Jorge Martin Espinosa
7facc40771 Split notifications for messages in threads (#5595)
* Separate thread notifications into their own notifications when the feature flag is enabled.

Otherwise, set the `threadId` to null so it'll behave as usual. It's done this way to avoid having to inject `FeatureFlagService` in several places.

* Add permalink navigation to threads from notifications, focusing on the latest event in the list of messages of the notification tapped

* Fix redactions in threads

* Clear notifications for a thread when visiting it

* Fix opening a thread happening twice, first because of the `openThreadId` value, then because of the `focusedEventId` one

* Make opening a room through a notification also focus on the latest event

* Add helper `NotificationCreator.messageTag` function

* Remove unused `ROOM_CALL_NOTIFICATION_ID`: `FOREGROUND_SERVICE_NOTIFICATION_ID`+ `ForegroundServiceType` is used instead

* Simplify `DefaultDeepLinkCreator`

* Make sure the main timeline focuses on the thread root id too when navigating to a thread

* Handle "Mark as read" action for thread notification, using `timeline.markAsRead`

* Log failures to mark rooms as read using the notification action

---------

Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-10-30 15:15:00 +00: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
cc050a1f26 Merge branch 'develop' into feature/bma/mediaForward
# Conflicts:
#	appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt
2025-10-29 12:41:58 +01:00
Benoit Marty
21bae4aee2 Add Forward action to MediaDetailsBottomSheet. Closes #5454
Improve API of Callback when forwarding Event.
2025-10-28 18:13:53 +01:00
Jorge Martín
003af22c31 Fix api breaks:
- `ComposerDraft` now takes a list of media attachments.
- `HumanQrLoginException` has a couple of new cases.
- `Client.loginWithQrCode` now returns a `LoginWithQrCodeHandle`, which we need to call using `scan` to have the same behaviour as before.
2025-10-28 17:14:40 +01:00
Benoit Marty
826cacf209 Remove @Inject, not necessary anymore when class is annotated with @ContributesBinding 2025-10-22 18:52:37 +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
a83630169e Fix API break in QrCodeLoginStep. 2025-10-13 15:52:06 +02:00
Benoit Marty
245509cd88 Make Timeline.Mode stable 2025-10-09 18:22:40 +02:00
Benoit Marty
264cf9e1b3 Make VerificationRequest stable 2025-10-09 18:22:38 +02:00
Benoit Marty
2d9b034940 Make Outgoing stable 2025-10-09 18:22:36 +02:00
Benoit Marty
e6cd8d5fb5 Remove useless Immutable annotation 2025-10-09 18:22:33 +02:00
Benoit Marty
589954203b Make Role stable 2025-10-09 18:22:30 +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
7ce2c08f6e Merge pull request #5490 from element-hq/feature/bma/improveImmutables
Ensure that we are using Immutable instead of Persistent
2025-10-09 11:48:32 +02:00
Benoit Marty
9dd6f7be68 Let SpaceRoom be stable the proper way. 2025-10-08 16:42:48 +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
ganfra
4b39c668db feature(space): makes sure SpaceRoom is marked as Immutable 2025-10-08 14:07:57 +02:00
ganfra
dde6dd0ed5 feature(space): use SpaceRoom.displayName from sdk 2025-10-07 20:15:46 +02:00
Benoit Marty
365116a40a Map SpaceRoom.displayName 2025-10-07 18:07:27 +02:00
ganfra
824d4075f6 Merge pull request #5468 from element-hq/feature/fga/space_tweaks
Spaces : some tweaks around ui
2025-10-07 10:55:05 +02:00
ganfra
1c819e5774 feature(space): introduce SpaceRoomVisibility and remove room count 2025-10-06 20:50:05 +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
ganfra
ea08edb912 feature(space): compute space room name locally 2025-10-06 14:21:01 +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
ffde95fb84 Merge pull request #5432 from element-hq/feature/bma/leaveSpace
Leave space: use SDK API.
2025-10-03 16:43:45 +02:00
ganfra
d577f02126 Merge pull request #5449 from element-hq/feature/fga/room_list_space_invite
Room list space invite
2025-10-03 13:17:28 +02:00
ganfra
576429b183 feature(space) : filter space manually so we can show space invites 2025-10-02 17:38:47 +02:00
Benoit Marty
c36577889d Leave space: use the SDK API. 2025-10-02 17:26:02 +02:00
Benoit Marty
fb346a1587 Let SpaceId be an alias of RoomId 2025-10-02 17:25:33 +02:00
Benoit Marty
a36f10ae30 Update SDK 2025-10-02 17:25:31 +02:00
Benoit Marty
0f94ebc56e We do not need CurrentSessionIdHolder anymore.
The SessionId can be provided by SessionMatrixModule and injected in constructors directly.
2025-10-01 17:57:13 +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
ef29c4ba97 Remove code duplication around UserProfile mapper. 2025-09-29 15:38:08 +02:00
Benoit Marty
fd2041a7ef SessionVerificationRequestDetails: map deviceDisplayName. 2025-09-29 15:38:07 +02:00