Commit Graph

1761 Commits

Author SHA1 Message Date
Jorge Martin Espinosa a8c4d5d019 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
renovate[bot] c412d6c53f Update dependency app.cash.molecule:molecule-runtime to v2.2.0 (#5413)
* Update dependency app.cash.molecule:molecule-runtime to v2.2.0

* Fix compilation warnings

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-09-26 11:21:35 +02:00
renovate[bot] 5b9ce7a210 Update metro to v0.6.7 (#5416)
* Update metro to v0.6.7

* Replace `@Inject` with `@AssistedInject` where needed

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-09-26 08:16:36 +00:00
renovate[bot] a8e1744fe5 Update dependency org.matrix.rustcomponents:sdk-android to v25.9.25 (#5412)
* Update dependency org.matrix.rustcomponents:sdk-android to v25.9.25

* Adapt to SDK changes:

`MessageLikeEventType` is now a sealed interface and has a new `data class Other(val v1: String)` case.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-09-25 14:33:15 +00:00
Benoit Marty a953547837 Merge pull request #5401 from element-hq/feature/bma/messagesViewTopBars
Rework on messages view top bars
2025-09-24 14:15:22 +02:00
Jorge Martin Espinosa d391be7002 Ensure the thread summary sender display name won't wrap to the next line (#5403) 2025-09-24 10:16:42 +02:00
Benoit Marty e36c9b7b88 More cleanup 2025-09-23 21:56:03 +02:00
Benoit Marty 4dfb9a32b8 More cleanup 2025-09-23 21:51:26 +02:00
Benoit Marty 164149e76b More cleanup 2025-09-23 21:49:11 +02:00
Benoit Marty b3dd6a257e Reduce number of previews of MessagesView and create preview dedicated to MessagesViewTopBar. 2025-09-23 21:49:11 +02:00
Benoit Marty 8d3a6d3b6f Extract topbars from MessagesView to reduce this file size.
No code change.
2025-09-23 21:49:10 +02:00
Jorge Martin Espinosa 0a5c178fe8 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
ElementBot d64b867f03 Sync Strings from Localazy (#5385)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-09-22 11:19:35 +02:00
Jorge Martin Espinosa 30e91e71b0 Add room info to the thread's top app bar (#5374)
* Add room info to the thread's top app bar

* Update screenshots

* Fix lint issues

---------

Co-authored-by: ElementBot <android@element.io>
2025-09-22 09:56:36 +02:00
Benoit Marty 2af6895b9f Fix compilation issues after merging develop. 2025-09-18 21:36:21 +02:00
Benoit Marty b194153b66 Merge branch 'develop' into feature/bma/testEntryPoint 2025-09-18 18:58:30 +02:00
Valere b13c93f3cd fix the tests 2025-09-18 14:32:01 +02:00
Valere 508aef98ff Use the new RtcNotification instead of deprecated CallNotify 2025-09-17 15:15:33 +02:00
Benoit Marty 4d7d0ac8d0 Avoid using AndroidJUnit4 runner to test Entrypoint implementations. 2025-09-16 14:38:32 +02:00
Benoit Marty cca195a1a5 Add more tests. 2025-09-16 14:38:32 +02:00
Benoit Marty a1aeb24f23 Add test on DefaultEntryPoints 2025-09-16 14:38:32 +02:00
Benoit Marty 2571bbf4ba Remove unused NavTarget.Empty 2025-09-16 09:57:21 +02:00
Jorge Martin Espinosa d9e7d74d2d 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
ElementBot 23cb084126 Sync Strings from Localazy (#5349)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-09-15 08:39:59 +02:00
Benoit Marty e634952a99 normalizedPowerLevel has been removed from the SDK (and was not used). 2025-09-11 08:52:02 +02:00
Benoit Marty 5ffd5b8f95 Remove useless annotation 2025-09-08 11:23:28 +02:00
Benoit Marty 255d786b70 Detect mime type when picking a file
The file picker will now try to detect the mime type of the selected file.
If it cannot be detected, it will fallback to `application/octet-stream`.
2025-09-08 11:23:26 +02:00
ElementBot f852fb4f82 Sync Strings from Localazy (#5290)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-09-08 09:37:13 +02:00
Jorge Martin Espinosa bdb9acfd32 Add emoji search to the reaction emoji picker (#5255)
* Add emoji search to the reaction emoji picker

* Update screenshots

* Fix tests and lint issues.

Fixing the tests required addressing some underlying issues in `SearchBar`

---------

Co-authored-by: ElementBot <android@element.io>
2025-09-05 17:11:40 +00:00
Benoit Marty ba12e26b20 Cleanup our DI solution and add documentation about the migration to Metro (#5287)
* Format

* Rename anvil modules to annotations and codegen

* Add documentation to migrate from Dagger/Anvil to Metro

* Other cleanup

* Cleanup kover config.
2025-09-05 17:39:56 +02:00
Jorge Martin Espinosa a8a6a51953 Allow replying to a message with an attachment (#5261) 2025-09-05 17:36:54 +02:00
Benoit Marty 8d533e8a20 Other cleanup 2025-09-05 16:54:45 +02:00
Benoit Marty e88743bd6a Rename anvil modules to annotations and codegen 2025-09-05 14:26:27 +02:00
bmarty 8027ce9dca Sync Strings from Localazy 2025-09-05 07:44:19 +00:00
Jorge Martín e8328858ab Fixes after rebase 2025-09-04 16:49:21 +02:00
Jorge Martín 29a97fc0d9 Fix lint issues and restore commented out code 2025-09-04 16:49:18 +02:00
Jorge Martín b76a71ebf5 Start migrating Anvil KSP to Metro 2025-09-04 16:48:34 +02:00
renovate[bot] 98cc918a3e Update dependency io.element.android:emojibase-bindings to v1.4.3 (#5250)
* Update dependency io.element.android:emojibase-bindings to v1.4.3

* Fix breaks in API

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-09-02 09:20:21 +02:00
Jorge Martin Espinosa 66eb876b2d [a11y] Add click action to the message bottom sheet handle (#5228) 2025-09-01 15:27:40 +02:00
ElementBot 02c9549bc0 Sync Strings from Localazy (#5249)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-09-01 12:44:49 +02:00
Jorge Martin Espinosa 6e6440940f Add extra logs for sending media (#5218)
* Add extra logs for sending media

We have some issues with stuck media uploads that could use some logs to understand where the process gets stuck.

* Fix mocks for test
2025-08-26 07:02:15 +00:00
ElementBot 2c75a1f834 Sync Strings from Localazy (#5211)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-08-25 11:15:38 +02:00
Jorge Martin Espinosa 7a5a197e7e Allow replying to any remote message in a thread (#5201)
* Allow replying to any remote message in a thread.

This will open the thread screen based on the selected event:

- If it was already part of a thread, it will open that thread.
- Otherwise, it'll open the thread timeline screen so you can start a thread from the event.

* Add the feature flag to decide which action to perform. Also, rename the feature flag to something easier to understand.

* Display the reply in thread action based on the feature flag too

---------

Co-authored-by: ElementBot <android@element.io>
2025-08-22 16:07:13 +02:00
Jorge Martin Espinosa 9bc2c4a776 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 35928e3630 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
Jorge Martin Espinosa 85b0f11ab6 Fix bitrate value used for video transcoding (#5183)
* Fix bitrate value used for video transcoding:

It should be 1000 times what it is now. The video size estimation was wrong since the retrieved duration value was in milliseconds, not seconds.

* Use `Duration` as the result type for `getDuration`
2025-08-18 21:12:11 +00:00
renovate[bot] 90ad9616c0 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
ElementBot 7c40c87d9a Sync Strings from Localazy (#5178)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-08-18 11:09:27 +02:00
Benoit Marty 58ce545d98 Merge pull request #5160 from element-hq/feature/bma/cleanupFeatureFlags
Remove old feature flags
2025-08-12 18:21:44 +02:00
Jorge Martin Espinosa 516c3cfda3 Provide calculated server names when opening a room from another (#5155)
* Provide calculated server names when opening a room from another, based on the most frequently used domain names in the user ids for the users in the room.

This helps when following permalinks or navigating to the successor room of a tombstoned one. Previously, the `/summary` endpoint was failing because no server names were used in the `via` parameters.
2025-08-12 15:17:46 +00:00