Commit graph

4539 commits

Author SHA1 Message Date
Jorge Martín
753322d50e Pass around fromPinnedEvents so we can use it to decide whether to forward the event from the main timeline or the pinned events one 2025-11-03 14:43:57 +01:00
ElementBot
967dfe6a6b
Sync Strings from Localazy (#5662)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-11-03 10:58:12 +01:00
renovate[bot]
98acdadc6f
fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.31 (#5657)
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.31

* Fix API breaks

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-11-03 10:48:06 +01:00
Jorge Martin Espinosa
1ea4eabcc5
Enable SyncNotificationsWithWorkManager by default in release mode apps too (#5646) 2025-10-31 16:25:36 +01:00
Benoit Marty
07b6148035 Remove context(parentNode: Node) and provide the parent Node as a parameter. 2025-10-31 12:04:57 +01:00
Benoit Marty
6298209ad9 Create Fake classes in test modules 2025-10-30 18:32:31 +01:00
Benoit Marty
f174084942 Use context parameter for the parentNode 2025-10-30 16:32:53 +01:00
Benoit Marty
02dc71c4c3 Remove NodeBuilder to ensure that Params and Callback are always provided. 2025-10-30 16:32:52 +01:00
Benoit Marty
be03c50aaf Ensure a Callback and only one is provided in the Plugin. Also reduce boilerplate code in Nodes. 2025-10-30 16:32:51 +01:00
Benoit Marty
43972dba68 Rename fun in Callback for clarity. 2025-10-30 16:32:48 +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