Commit graph

14420 commits

Author SHA1 Message Date
Jorge Martin Espinosa
1f927b9965 Fix public read receipts being sent by mistake (#6838)
When returning to the chat screen from the room details one or a member's profile, `TimelineEvent.OnScrollFinished` will be called immediately, and this would read the default value for `isSendPublicReadReceiptsEnabled`, which is `true`.

If you had public read receipts disabled, this is a mistake, and would send a public read receipt. Instead, what we want to do is wait until the updated value is emitted and use it to decide whether we want to send a public or private read receipt.
2026-05-26 10:10:42 +02:00
Benoit Marty
6fb79d6e06 Image edition before sending: crop and rotate. (#6842)
* Add crop and rotate editing before sending images (#6363)

* feat(messages): add crop and rotate before image upload

* Update screenshots

* chore: trigger CI after screenshot update

* fix: resolve detekt violations in image editor and media viewer modules

* fix: require explicit edits param, use plurals for rotation a11y, remove redundant @Inject

* fix: require explicit edits param, use plurals for rotation a11y, remove redundant @Inject

* fix: use semantically correct RotateRight icon for image rotation action

* Update screenshots

* chore: trigger CI after screenshot update

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Benoit Marty <benoitm@element.io>

* Update design and UX

Update and add tests
Improve preview

* Update screenshots

* For quality issue and improve preview

* Update screenshots

* Remove default value of data class.

* Rename file.

* Fix tests.

* Allow detecting touch events outside the image by applying the drag detection to the parent node and offsetting the touch events

* Improve touch detection.

* Update screenshots

* Remove useless line.

---------

Co-authored-by: Gianluca Iavicoli <gianluca.iavicoli04@gmail.com>
Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-05-26 10:07:05 +02:00
ElementBot
13bcf48e2a Sync Strings from Localazy (#6856)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-05-26 08:05:07 +00:00
Jorge Martin Espinosa
d5fa633bba Use runBlocking for the token refresh logic (#6863)
* Use `runBlocking` for the token refresh logic

The `RustClientSessionDelegate` callbacks always run in a separate thread, so they don't block the main thread.

This ensures the token refresh is fully done (data saved/failed to) before the SDK continues sending the pending previously failed requests
2026-05-26 09:40:07 +02:00
Benoit Marty
45a4cefbd8 Remove useless line. 2026-05-26 09:22:43 +02:00
renovate[bot]
089bf0c690 Update codecov/codecov-action action to v6.0.1 (#6864)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-26 07:59:33 +02:00
ElementBot
58be97ee8b Update screenshots 2026-05-25 19:34:34 +00:00
Benoit Marty
edfdda36d6 Improve touch detection. 2026-05-25 21:16:12 +02:00
bxdxnn
23abc91510 Fix formatting inconsistencies in latest event summaries (#6855)
* Fix message type prefixes formatting inconsistencies

* Use new string for the poll summary prefix instead of the A11y text. Also add tests check for the bold spans.

---------

Co-authored-by: Jorge Martín <jorgem@element.io>
2026-05-25 11:40:25 +02:00
bxdxnn
ff263e611e Do not show membership/profile events in public rooms (#6360)
* Filter some membership/profile/topic events in public rooms: don't display join and leave membership events in publicly joinable rooms, and hide display name and avatar url changes in non encrypted and publicly joinable rooms.

* Add empty day post-processing to the timeline based on bxdxnn's code, tweaked.

---------

Co-authored-by: Jorge Martín <jorgem@element.io>
2026-05-25 10:31:53 +02:00
Jorge Martín
935506230b Allow detecting touch events outside the image by applying the drag detection to the parent node and offsetting the touch events 2026-05-22 16:57:00 +02:00
Benoit Marty
3623b9d7fc Fix tests. 2026-05-22 15:28:48 +02:00
Benoit Marty
1971d8842c Rename file. 2026-05-22 13:59:21 +02:00
Benoit Marty
23602cf8e7 Remove default value of data class. 2026-05-22 13:56:50 +02:00
ElementBot
3cb8f25429 Update screenshots 2026-05-22 10:29:31 +00:00
Benoit Marty
12c8240d04 For quality issue and improve preview 2026-05-22 12:13:09 +02:00
ElementBot
f4a136db77 Update screenshots 2026-05-22 08:45:58 +00:00
Benoit Marty
2d5a0b9153 Update design and UX
Update and add tests
Improve preview
2026-05-22 10:29:36 +02:00
renovate[bot]
f297ce3d52 Update dependencyAnalysis to v3.12.0 (#6840)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 07:57:00 +02:00
Gianluca Iavicoli
8851d91ff6 Add crop and rotate editing before sending images (#6363)
* feat(messages): add crop and rotate before image upload

* Update screenshots

* chore: trigger CI after screenshot update

* fix: resolve detekt violations in image editor and media viewer modules

* fix: require explicit edits param, use plurals for rotation a11y, remove redundant @Inject

* fix: require explicit edits param, use plurals for rotation a11y, remove redundant @Inject

* fix: use semantically correct RotateRight icon for image rotation action

* Update screenshots

* chore: trigger CI after screenshot update

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Benoit Marty <benoitm@element.io>
2026-05-21 15:18:40 +02:00
renovate[bot]
07d3a90ec4 Update peaceiris/actions-gh-pages action to v4.1.0 (#6820)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-21 15:01:35 +02:00
renovate[bot]
986a899eef Merge pull request #6816 from element-hq/renovate/media3
Update media3 to v1.10.1
2026-05-21 15:01:00 +02:00
renovate[bot]
550c0417dc Update dependency org.matrix.rustcomponents:sdk-android to v26.05.20 (#6831)
* Update dependency org.matrix.rustcomponents:sdk-android to v26.05.20

* Fix API breaks:

- Handle new `ClientBuildException.InvalidRawKey` variant.
- `RoomInfo` now has a `fullyReadEventId` .

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-05-21 12:27:29 +02:00
Benoit Marty
7d2ba03924 Merge pull request #6705 from bxdxnn/misc/roommembermoderation-avatar-tap
Make the avatar in the room member moderation bottom sheet clickable
2026-05-21 11:59:28 +02:00
Benoit Marty
bd72ae3d78 Merge pull request #6822 from element-hq/renovate/kotlin
Update kotlin to v2.3.8
2026-05-21 10:56:54 +02:00
Benoit Marty
74506908d2 Merge pull request #6833 from element-hq/renovate/io.element.android-element-call-embedded-0.x
Update dependency io.element.android:element-call-embedded to v0.19.4
2026-05-21 10:55:48 +02:00
Benoit Marty
535af93d85 Merge pull request #6817 from element-hq/feature/bma/automaticRetry
[Link new device] Rotate QrCode instead of showing an error
2026-05-21 10:29:29 +02:00
renovate[bot]
f7f0d95b8b Update dependency io.element.android:element-call-embedded to v0.19.4 2026-05-21 08:15:40 +00:00
renovate[bot]
1721e49a07 Update metro to v1.1.1 (#6832)
* Update metro to v1.1.1

* Fix `@ContributesBinding` usage with `@AssistedInject` in `DefaultVideoMetadataExtractor`

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-05-21 10:10:13 +02:00
Benoit Marty
e738ef17db Fix wrong 'modifier' usage. 2026-05-21 09:14:18 +02:00
Benoit Marty
f6b0cbd03b Fix warning 2026-05-21 09:10:43 +02:00
Benoit Marty
981b356721 Merge pull request #6818 from element-hq/feature/bma/markAsUnreadInRoomDetails
Add mark as read / unread in room details
2026-05-21 09:01:52 +02:00
Benoit Marty
b92b78ec84 Merge pull request #6827 from element-hq/feature/bma/a11y/roomNameHeading
[a11y] Improve accessibility of screen headers.
2026-05-21 09:00:33 +02:00
Benoit Marty
aa3427381c Merge pull request #6830 from element-hq/feature/bma/a11y/videoPlayer
[a11y] Improve accessibility of video and audio player
2026-05-20 18:06:04 +02:00
Benoit Marty
19c5c8da06 [a11y] Improve accessibility of media controller 2026-05-20 17:23:30 +02:00
cizra
aec0f596f0 Don't compress images sent through the Files attachment picker (#6755)
* Don't compress images sent through the Files attachment picker

Images and videos picked through the "Attachment" picker are now
uploaded without re-encoding, regardless of the "Optimize media quality"
setting. The gallery and camera pickers keep the existing behaviour,
matching what Element Web/Desktop and most other messengers do.

Fixes #6365

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Make sure we select the right video preset for sending as file

Wait for the video size estimations to be calculated before preprocessing the video file

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-05-20 17:19:08 +02:00
ganfra
df11c32d87 Merge pull request #6813 from element-hq/renovate/dependencyanalysis
Update dependencyAnalysis to v3.11.0
2026-05-20 17:09:13 +02:00
Benoit Marty
1513869b0c [a11y] Improve accessibility of media controller 2026-05-20 17:04:24 +02:00
Benoit Marty
d002597c0d [a11y] Ensure that video overlay with controls is never hidden when screen reader is enabled. 2026-05-20 16:21:06 +02:00
Benoit Marty
20c55bdf4f Merge pull request #6826 from element-hq/feature/bma/a11y/avatarEdit
Hide edit pencil from accessibility
2026-05-20 15:58:05 +02:00
Benoit Marty
15b7bd2bac [a11y] Improve accessibility of screen headers. 2026-05-20 15:53:08 +02:00
Benoit Marty
798ed7b6c3 [a11y] Improve accessibility of screen headers. 2026-05-20 15:52:46 +02:00
Benoit Marty
97ca702bc8 [a11y] Improve accessibility of screen headers. 2026-05-20 15:49:18 +02:00
Benoit Marty
c5911d7849 [a11y] Improve accessibility of screen headers. 2026-05-20 15:39:11 +02:00
Jorge Martin Espinosa
c3fedbf997 Release proximity wakelock on Element Call when call ends (#6825)
The `CoroutineScope` that launched this logic was cancelled by that point, so the wakelock was never released.
2026-05-20 15:23:03 +02:00
Benoit Marty
46268ca9db Hide edit pencil from accessibility
Closes #6378
2026-05-20 14:50:26 +02:00
ElementBot
70e166d9ef Update screenshots 2026-05-20 12:44:42 +00:00
Benoit Marty
a306ee9c9f Format 2026-05-20 14:27:38 +02:00
Jorge Martin Espinosa
3593ca36d9 Fix 'Conversation label cannot be empty' error (#6823)
This happens when building a `ShortcutInfoCompat` in `DefaultNotificationConversationService.onSendMessage` when the provided room name is not null but it's empty.
2026-05-20 14:26:44 +02:00
Jorge Martin Espinosa
69773af445 Fix media viewer flickering (#6800)
* Fix media viewer flickering

This was caused by the data being loaded triggering an index update that got out of sync with the displayed items, and for an instant, the pager index pointed to the wrong data until it was refreshed

* Reuse the same 'displayer' function for both forwards and backwards pagination

* Make `dataFlow` a property so we don't create a new instance every time we access it

* Remove `pageDataComparator` as it prevented new items from being loaded when a pagination returned no valid items to display but has more items to load

Make sure we modify the current index when loading new data only if it was pointing to the input event id.

* Fix `MediaViewerDataSource` overriding the provided timestamp for `Loading` items

Test emitting different loading items from the data source results in the state displaying the different items, so they will trigger a new pagination attempt

* Add regression test to check loading -> error -> loading states will still trigger 2 separate `LoadMore` events
2026-05-20 11:32:32 +02:00