Commit Graph

5137 Commits

Author SHA1 Message Date
Jorge Martin Espinosa bd618ccba6 Fix content scrolling not working in the RTE (#6492)
Implement a `customDetectVerticalDragGestures` that matches the original `detectVerticalDragGestures` expect we conditionally consume the initial DOWN event in compose to decide whether we need to drag the bottom sheet or scroll inside the Android `EditText`
2026-04-01 11:06:28 +02:00
Jorge Martin Espinosa 87184328eb Fix crash when using View.hideKeyboardAndAwaitAnimation (#6502)
* Fix crash when using `View.hideKeyboardAndAwaitAnimation`

Remove the `View.OnApplyWindowInsetsListener` used in modern Android versions to detect if the insets changed after they do the first time: this is a single use operation and the listener will be called every time the insets change

Also, replace `Mutex` with `CompletableDeferred` so it doesn't matter if it's called several times, we only care about the first one.

* Don't try to hide the keyboard if it's already hidden. Also, add a 1s timeout in case everything goes wrong and we somehow never complete the future.
2026-03-31 16:45:10 +00:00
Jorge Martin Espinosa 579bc7db62 Try fixing location pin previews (#6495)
* Try fixing location pin previews

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Benoit Marty <benoitm@element.io>
2026-03-31 14:57:37 +00:00
ElementBot 6ab47dae17 Sync Strings from Localazy (#6486)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-03-31 15:48:37 +02:00
Jorge Martin Espinosa ad56b01e4a Try handling ForegroundServiceStartNotAllowedException better (#6483)
* Try handling `ForegroundServiceStartNotAllowedException` better

The docs mention starting a foreground service when the app is on background is allowed when FCM receives a high priority notification, so we don't do it if the priority is not high.

Also, we handle the case where starting the foreground service fails so it doesn't crash the app.
2026-03-30 18:44:08 +02:00
bxdxnn a2fe637978 Fix media cover placeholder floating (#6484) 2026-03-30 11:26:16 +02:00
Benoit Marty cbb220f08d Merge pull request #6472 from element-hq/feature/bma/inReplyUi
Update replied message UI
2026-03-27 10:17:01 +01:00
Jorge Martin Espinosa bba2e6df3f Fix ForegroundServiceDidNotStartInTimeException (#6470)
* Start the `FetchPushForegroundService ` in foreground ASAP. This is a first step to mitigate `ForegroundServiceDidNotStartInTimeException` being thrown.

* Don't stop the service immediately if it's running but not in foreground. Try waiting up to 5s for it to be in foreground.
2026-03-27 06:54:27 +00:00
Benoit Marty 1de3729792 Merge pull request #6446 from bxdxnn/misc/bullet-margin
Add margin after bullet points
2026-03-25 17:05:48 +01:00
Benoit Marty 7d28c52242 Cleanup 2026-03-25 16:51:41 +01:00
Benoit Marty 747f588fa7 Update UI of replies. 2026-03-25 15:27:36 +01:00
Benoit Marty 087c159325 Merge pull request #6459 from element-hq/feature/bma/iterateOnBadgeColors
Sync compound tokens https://github.com/element-hq/compound-design-tokens/releases/tag/v8.0.0
2026-03-25 14:28:15 +01:00
Benoit Marty aa5b1f5a07 Merge pull request #6456 from element-hq/feature/bma/iterateOnSpaceHeader
Iterate on space header
2026-03-24 17:54:02 +01:00
ElementBot 968b967864 Update screenshots 2026-03-24 16:04:35 +00:00
Benoit Marty 78d500ba55 Edit room detail: increase avatar size. #6458 2026-03-24 16:56:34 +01:00
Benoit Marty 8e1388efb7 Add border for Neutral badge. 2026-03-24 16:39:37 +01:00
Benoit Marty e9811ada20 Add missing color in preview. 2026-03-24 16:33:20 +01:00
Benoit Marty eef20f723b Update colors of permalinks. 2026-03-24 16:31:15 +01:00
Benoit Marty 6ce20d2e9e Import compound token v8.0.0
./tools/compound/import_tokens.sh -b v8.0.0
2026-03-24 15:59:50 +01:00
ganfra 92920b862b Merge pull request #6342 from element-hq/feature/fga/live_location_sharing_setup
Setup live location sharing feature
2026-03-24 15:46:45 +01:00
Benoit Marty 3439def2c5 Add Figma link on MatrixBadgeAtom 2026-03-24 15:43:04 +01:00
Benoit Marty c45b131a84 AvatarPickerView: ensure the pencil icon always has the same size and improve the preview. 2026-03-24 15:18:35 +01:00
Gianluca Iavicoli 443802944a Fix voice recording being interrupted by notifications sounds (#6438) 2026-03-24 13:53:42 +01:00
Benoit Marty c359da9ed7 We want an icon size of 20 when the avatar size is 64. 2026-03-24 12:53:31 +01:00
Benoit Marty 8c5ea9694e Edit room/space detail: change avatar size to 64 and adapt edit icon ratio. See #6364 2026-03-24 12:53:31 +01:00
Benoit Marty 39298ec898 Space header: change font of info to fontBodyMdRegular and icon size to 16. See #6364 2026-03-24 12:53:30 +01:00
ganfra 41a30fe6a3 Fix warning 2026-03-24 12:15:14 +01:00
Benoit Marty 75a6eb21ca Merge pull request #6453 from element-hq/feature/bma/increaseIconSize
Increase icon size of audio and files in the timeline
2026-03-24 11:59:17 +01:00
Jorge Martin Espinosa dbcd60465e Restore custom user certificate provider (#6451)
It was removed because we temporarily lost this functionality in the Rust SDK
2026-03-24 10:58:08 +00:00
renovate[bot] 2f99806603 fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha15 (#6306)
* fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha15

* Fix deprecations

* Add bottom sheet workaround

* Fix new lint issues

* Fix and ignore broken tests

* 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>
2026-03-24 11:24:07 +01:00
ganfra d707ad1c27 Merge branch 'develop' into feature/fga/live_location_sharing_setup
# Conflicts:
#	tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en.png
#	tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en.png
#	tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_8_en.png
#	tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_8_en.png
2026-03-24 11:23:50 +01:00
renovate[bot] a6a63736e7 fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v26.03.23 (#6444)
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v26.03.23

* Fix `RoomInfo` test fixture

* Add `activeCallIntentConsensus` to `RoomInfo`

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-03-24 11:22:32 +01:00
ganfra 1c5037f6e2 Add localazy config for location sharing 2026-03-24 11:13:40 +01:00
Benoit Marty 04582bcfa6 Fix reply content icon for attachment.
See https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=2019-6286
2026-03-24 11:01:09 +01:00
ganfra 9a984e1423 Merge branch 'develop' into feature/fga/live_location_sharing_setup 2026-03-24 10:17:24 +01:00
ganfra dee8ce27e7 Use formatter for LLS duration 2026-03-24 10:15:25 +01:00
Benoit Marty 54de64efd5 Update Mic icon in the composer bar. Closes #6443 2026-03-24 10:00:08 +01:00
bxdxnn a50b39fd89 Add margin after bullet points 2026-03-23 19:39:28 +00:00
ElementBot 7179ca867c Sync Strings (#6435)
* Sync Strings from Localazy

* Sync strings.

---------

Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2026-03-23 18:05:26 +00:00
Jorge Martin Espinosa eb7d65263a Fix long messages not being clickable (#6356)
* Fix long messages not being clickable

As @bmarty found out, `clip = true` causes the click event to be ignored in some cases. Since we have the shape we want to draw and we're using a custom `onDraw` modifier anyway to cut-out part of the path, we can just draw everything using the modifier and avoid using `clip = true`.

This seems to fix the issue.

* Fix clipping of images or other items that cover the bubble

* Fix borders being displayed for contents

* Extract the layer drawing logic into `drawInLayer` to simplify the inlined code. Remove redundant code, those changes are now in the `drawInLayer` block

* Workaround for lint issue: it seems like detekt can't properly detect usages in content receivers

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-03-23 18:11:55 +01:00
Jorge Martin Espinosa f1708f6366 Fix wakelock not stopping early when notifications are disabled (#6424)
If notifications for a device are disabled when there is no connection with the HS, the push registration will still exist, so the device can still receive push notifications.

In that cases, we were running into an issue where the wakelock for push notifications was started immediately after receiving a push but was never stopped and it ran for 3 minutes until its timeout, keeping the device awake for no reason.

This patch changes `DefaultPushHandler` so if we don't need the wakelock it returns `false` and we can stop the wakelock early.
2026-03-23 18:07:25 +01:00
Jorge Martin Espinosa 3a7faa8b76 Fix TransactionTooLargeExceptions caused by Appyx (#6410)
* Fix `TransactionTooLargeExceptions` caused by Appyx

After a long debugging session, we discovered the code Appyx uses to clear the saved state of nodes that have been removed is not working because of a race condition, causing this saved state to grow indefinitely.

To fix it, we need to wait until the node has been disposed, which will call `SaveableStateHolder.removeState` once, removing the associated `SaveableStateRegistry`, and *then* call `removeState` again when we detect the node has been removed from the navigation graph.

Since these classes and APIs are private in Appyx, we had to copy and modify and use these copies.

* Remove ktlint checks on `SafeChildrenTransitionScope.kt`

* Don't count the new code for coverage
2026-03-23 18:07:00 +01:00
bxdxnn e1110e2a6e Fix media seeking flicker (#6434) 2026-03-23 16:03:50 +01:00
Jorge Martin Espinosa 054b7302f1 Fix crash when starting a DM (#6419)
`AnchoredDraggable.requireOffset` was called before it was populated when displaying  `CreateDmConfirmationBottomSheet`, because the keyboard and the bottom sheet were causing conflicting animations related to the insets.

Hiding the keyboard before displaying the bottom sheet seems to fix the issue, and `skipPartiallyExpanded` results in a better UX (and also worked around the issue by itself).
2026-03-23 16:00:04 +01:00
Gianluca Iavicoli 800a9ab972 Fix keyboard not auto-opening when editing a message (#6412)
* fix: auto-open keyboard when editing a message

* fix: show keyboard on focused editor view instead of root view
2026-03-23 10:54:59 +01:00
renovate[bot] 0c8a01d2cf fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v26.03.19 (#6411)
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v26.03.18

* Fix API breaks

* Add compatibility with rustls (#6367)

A new `rustls-platform-verifier-android` library has to be added to the project, it'll be called from Rust to get access to the certificates on Android.

Originally, this was supposed to be added as a local maven repo pointing to the rust crate that publishes the AAR, but that's just plain terrible (more details [here](https://github.com/rustls/rustls-platform-verifier#android).

Instead, what we can do is use a script that uses `cargo-download` to download the latest crate or a specified version, unzip it and add the `aar` file to the `:libraries:matrix:impl` module.

* Try fixing Sonar with local AAR files

* Remove `UserCertificatesProvider`: this is no longer needed after integrating rustls

* Added some docs for rustls and its `platform-verifier` library

* Upgrade SDK to `26.03.19`: this version contains a workaround that allows the app to use the same TLS verifier as before, fixing the Let's Encrypt issues we saw with some homeservers (like element.io)

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-03-20 16:20:37 +01:00
Benoit Marty b2d6e8ccca Map ClientBuildException.WellKnownDeserializationException to AuthenticationException.InvalidServerName, so that the error displayed to the user is more explicit. Closes #6368 2026-03-17 18:05:23 +01:00
Jorge Martin Espinosa 8e46e68630 Add a foreground service with a wakelock for fetching push notifications (#6321)
* Create `PushHandlingWakeLock` to start a foreground service:

When receiving a push and scheduling the notification fetching, several problems can happen:

1. Some async operation is waiting for a timeout and it takes way longer than that to finish (i.e. timeout of 10s but it took 30s to advance).
2. The same, but when starting new coroutines. I've seen the time between scheduling a coroutine and it running sometimes take up to 1 minute.
3. Notification fetching can be scheduled immediately, but it can take a while to actually run because the OS understands the app is now in Doze.

Having a wakelock that runs as soon as the push handling starts fixes these: it continues the previous wakelock held by either Firebase or the UnifiedPush distributor.

* Acquire the wakelock as soon as we received the pushes in both receivers

* Also release the wakelock ahead of time if possible
2026-03-17 14:24:26 +01:00
Benoit Marty 2141795d59 Merge pull request #6352 from element-hq/sync-localazy
Sync Strings - iterate on wording about crypto identity
2026-03-16 16:06:54 +01:00
Jorge Martin Espinosa e79d9b627e Improve Kover setup by using only convention plugins (#6213)
* Improve Kover setup using convention plugins.
* Add a new JVM library convention plugin with Kover support
2026-03-16 14:41:07 +00:00