Commit graph

4532 commits

Author SHA1 Message Date
Benoit Marty
7ee00a65d8 Rename OneShotNotification.key to OneShotNotification.tag for clarity. 2025-10-31 09:25:04 +01:00
Benoit Marty
7d7ea5d67c NotificationDataFactory: improve API 2025-10-31 09:25:03 +01:00
Benoit Marty
57ac39673d Notification: show userId in notification when several accounts are configured. 2025-10-31 09:25:01 +01:00
Jorge Martin Espinosa
353c00e032
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
eb08639776
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
Benoit Marty
ba1b811f37 Sadly detekt still needs this. It will be fixed in detekt 2.0.0 2025-10-30 15:01:14 +01:00
Benoit Marty
5a03206595 Remove exclusion, ktlint is now able to handle Kotlin context parameter. 2025-10-30 14:33:28 +01:00
Benoit Marty
eef0fbf4be Fix "Arrow is redundant when parameter list is empty"
And other issues that ktlint now reports
2025-10-30 14:33:25 +01:00
Benoit Marty
ea616be814 Fix "Backing property is only allowed when a matching property or function exists" 2025-10-30 13:27:19 +01:00
Jorge Martin Espinosa
6c3b280ecd
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
renovate[bot]
bb61126c96
fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.29 (#5625)
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.29

* Rename `NoPointer` to `NoHandle` for the Rust FFI fakes

* `@Ignore` tests broken by FFI direct mapping

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-10-29 22:56:03 +01:00
Benoit Marty
f75a2cc12c 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
Jorge Martin Espinosa
84d0338ed3
Fix issues with WorkManager on Android 12 and below (#5606)
* Add `getForegroundInfo` implementation to try to fix issues with WorkManager on Android 12 and below

This may be a MIUI-only issue as I couldn't reproduce it with several emulators on Android 11, 12 and 13.

* Use `setExpedited` only on Android 13 or higher, it's not needed on older versions

* Use an actual string resource, fix tests

* Fix review comments

* Fix broken test with Element Pro:

Instead of using Robolectric with API < 33 (since Pro uses minSdk 33) use a `BuildVersionSdkIntProvider`

* Remove `getForegroundInfo` and the associated permission, as we expect it to be dead code

* Fix lint issues

* Cleanup NotificationIdProvider

---------

Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-10-28 20:06:57 +00:00
Benoit Marty
d7109be89e Add missing tests. 2025-10-28 20:28:37 +01:00
Benoit Marty
e6c72df67f Remove unused dependency 2025-10-28 18:48:21 +01:00
Benoit Marty
26ce78d27d
Confirm exit without saving change in room details edit screen (#5618)
* Room details edit screen: add confirmation dialog when leaving without saving pending changes.

* Improve preview coverage.

* Update screenshots

* Introduce AsyncAction.ConfirmingCancellation and use it for leaving room edition without saving change.

* Fix issue in comment

* Use new `ConfirmingCancellation` object in Change Roles screen

---------

Co-authored-by: ElementBot <android@element.io>
2025-10-28 18:25:51 +01:00
Benoit Marty
1e66db9a28 EventId cannot be null here. 2025-10-28 18:15:25 +01:00
Benoit Marty
95c735a90e 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
0d40a2fd79 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
7f22777ad9 Extract code for forwarding Event to its own modules. 2025-10-28 15:42:39 +01:00
ElementBot
b1addb4521
Sync Strings from Localazy (#5610)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-10-27 13:53:07 +01:00
Benoit Marty
9baf948b35
Merge pull request #5592 from element-hq/feature/bma/constValKey
Improve how data is handled for the WorkManager.
2025-10-24 19:20:44 +02:00
Benoit Marty
a9bc148d00
Merge pull request #5607 from element-hq/feature/bma/notificationStyle
Update notification style
2025-10-24 19:20:18 +02:00
Benoit Marty
a11af0c2b2 Remove element_logo_green.xml from the diagnostic notification. 2025-10-24 17:06:03 +02:00
Benoit Marty
6e9af83b6a Let notifications uses the brandColor. 2025-10-24 17:04:48 +02:00
ganfra
72fda96df1 design(space): let divider be full width
# Conflicts:
#	features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt
2025-10-24 16:07:16 +02:00
Benoit Marty
211c07c7e9 Quick reply action: use icon from compound 2025-10-24 13:25:38 +02:00
Benoit Marty
ac5c3ba607 Accept / reject invitation actions: use icons from compound 2025-10-24 13:23:59 +02:00
Benoit Marty
e8ac2f5f7b Mark as read: use icon from compound 2025-10-24 13:22:00 +02:00
Benoit Marty
f1b8f878de
Merge pull request #5600 from element-hq/feature/bma/deletePinCode
Delete pin code only when the last session is deleted
2025-10-24 09:47:57 +02:00
ganfra
0745f308c5
Merge pull request #5599 from element-hq/feature/fga/home_topbar_2
Design : update Home TopBar and RoomList Filters
2025-10-23 18:29:40 +02:00
Benoit Marty
752a4ea846 Fix detekt issue. 2025-10-23 18:03:22 +02:00
Benoit Marty
85035da028 Add unit test on DefaultLockScreenService 2025-10-23 17:20:36 +02:00
Benoit Marty
34a5785f38 Use TestScope.backgroundScope 2025-10-23 16:48:24 +02:00
Benoit Marty
11a808a2e0 Add test on wasLastSession value. 2025-10-23 16:48:23 +02:00
Benoit Marty
e23f9c31c5 Rename fixture fun for clarity. 2025-10-23 16:48:22 +02:00
Benoit Marty
a18eb6eb5e Add default implementation to SessionListener 2025-10-23 16:48:20 +02:00
ganfra
dfb9bc5ab0 design(home) : use enterAlwaysScrollBehavior for the RoomListFiltersView 2025-10-23 16:41:43 +02:00
Benoit Marty
9ca5fbdc08 Add parameter wasLastSession to SessionListener.onSessionDeleted 2025-10-23 16:20:15 +02:00
Benoit Marty
595812fef6 Cleanup 2025-10-23 15:39:23 +02:00
Benoit Marty
afdfe28ef4 Remove dependency on AppNavigationStateService from DefaultUnifiedPushCurrentUserPushConfigProvider 2025-10-23 15:37:31 +02:00
Benoit Marty
705b1b08f2 Remove dependency on AppNavigationStateService from DefaultGetCurrentPushProvider 2025-10-23 15:03:04 +02:00
Benoit Marty
76493f52ec
Merge branch 'develop' into feature/bma/metro070 2025-10-23 11:30:25 +02:00
Benoit Marty
ae04389255
Merge pull request #5587 from element-hq/feature/bma/robustWellknown
Improve wellknown retrieval API
2025-10-23 11:28:30 +02:00
Benoit Marty
0cff0e6f81
Merge pull request #5588 from element-hq/feature/bma/iconPreviewDuplicate
Remove icon preview duplicate
2025-10-23 10:40:41 +02:00
Benoit Marty
3bd4aa746d Add missing test. 2025-10-23 09:59:24 +02:00
Benoit Marty
a440815404 Introduce WorkerDataConverter to avoid hard coded Json key and ensure serializing/deserializing is performed at the same place. 2025-10-23 09:51:21 +02:00
Benoit Marty
263e761907 Remove @Inject, not necessary anymore when class is annotated with @ContributesBinding 2025-10-22 18:52:37 +02:00
Benoit Marty
27a6e6aa82 Fix compilation issue 2025-10-22 18:24:20 +02:00
Jorge Martin Espinosa
dd395a5214
Enable SyncNotificationsWithWorkManager in nightly and debug builds (#5573)
* Enable `SyncNotificationsWithWorkManager` in nightly and debug builds

* Fix tests
2025-10-22 16:55:40 +02:00