Commit Graph

6011 Commits

Author SHA1 Message Date
Benoit Marty c88edc9621 Notification settings: pick custom sounds for messages and call ringtones (#6897)
* Notification settings: pick custom sounds for messages and call ringtones (#6702)

* Feature: add notification sound settings for messages and calls

* Add sound not available banner, accessibility checks

* Fix build and Konsist convention violations

- libraries:preferences:api now uses io.element.android-compose-library
  so NotificationSound's @Immutable annotation can resolve, matching the
  pattern in libraries:matrix:api.
- Rename SoundUnavailableBannerStateProvider to
  NotificationSoundUnavailableStateProvider so the class name contains
  the parameter type as required by KonsistClassNameTest.

* Suppress LargeClass on RoomListPresenterTest

The three new sound-unavailable tests pushed the class past Detekt's
default LargeClass threshold. Matches the suppression pattern already
used on five presenter test classes under features/messages/impl/test.

* NotificationSettingsView: guard ringtone-picker launchers in inspection mode

rememberLauncherForActivityResult requires a LocalActivityResultRegistryOwner,
which Paparazzi-driven preview snapshot tests don't provide, causing
NotificationSettingsViewPreview to throw IllegalStateException for every
preview parameter. Extract the click handlers into a helper that returns a
no-op when LocalInspectionMode.current is true; the runtime path is unchanged.

* Handle unresolved notification sounds mid session

* Quality checks, refactor mid session error ui

* Suppress detekt LargeClass on NotificationSettingsPresenterTest

* Remove notification sound resilience layer, replace with file copy

* Reselect element sound option, code cleanup

* Add element fade notification sound option

* Fix new file headers

* Revert to flowOf(Unit) for announcement service

* Add ringtone picker dialog to match message selector

* Update strings in conjunction with ios

* Update test to reflect new string

* Sync strings.

* Update screenshots

* Fix test

* Remove not properly located translations.
This will be fixed in the next String sync.

* Fix test on CI

---------

Co-authored-by: Jenna Vassar <jenna.vassar@toptal.com>
Co-authored-by: ElementBot <android@element.io>
2026-05-28 16:54:12 +02:00
Benoit Marty 2798244975 Remove unused import 2026-05-28 09:54:03 +02:00
Benoit Marty 5ebeddfe2e Revert change 2026-05-28 09:54:02 +02:00
Benoit Marty c409fc2c83 Fix other issues detekted. 2026-05-28 09:54:02 +02:00
Jorge Martín 97de57fd79 More fixes 2026-05-28 09:54:01 +02:00
Jorge Martín bf1462f9b1 WIP 2026-05-28 09:54:00 +02:00
ganfra 4cafdae22d Merge pull request #6890 from element-hq/feature/beacon_events_permissions
change(permissions) : allow to change ShareLiveLocation permission
2026-05-27 14:46:33 +02:00
ganfra f37222e2d8 change(permissions) : allow to change ShareLiveLocation permission 2026-05-27 10:55:07 +02:00
Benoit Marty c846f4eee2 customMapStyleUrl should end with style.json and should not have any trailing slash. 2026-05-27 09:59:32 +02:00
Benoit Marty 6984ab0393 Use string template instead of multiple append invocations. 2026-05-27 09:54:27 +02:00
Benoit Marty 4a90768893 Read map tiler custom style from matrix .well-known file
Closes #6844
2026-05-26 16:14:09 +02:00
Jorge Martin Espinosa 1e67c2f77b Move empty day separator filtering to a timeline post-processor (#6866)
* Move empty day separator filtering to a timeline post-processor

* Split `FilterPublicMembershipChangesPostProcessor` from `RoomBeginningPostProcessor`
2026-05-26 08:28:32 +00:00
Jorge Martin Espinosa 0e2213a199 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 1f3d848c79 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 0aaa80cbdc Sync Strings from Localazy (#6856)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-05-26 08:05:07 +00:00
Benoit Marty 6cef5cec1b Remove useless line. 2026-05-26 09:22:43 +02:00
Benoit Marty 8a4ff4c456 Improve touch detection. 2026-05-25 21:16:12 +02:00
bxdxnn b31dad4b26 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 6e74446209 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 afa2a824b5 Fix tests. 2026-05-22 15:28:48 +02:00
Benoit Marty 94c3bb9c41 Rename file. 2026-05-22 13:59:21 +02:00
Benoit Marty fe6a17e977 Remove default value of data class. 2026-05-22 13:56:50 +02:00
Benoit Marty a158da1d18 For quality issue and improve preview 2026-05-22 12:13:09 +02:00
Benoit Marty bb2779549e Update design and UX
Update and add tests
Improve preview
2026-05-22 10:29:36 +02:00
Gianluca Iavicoli bcad1f9dce 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] 7e42dd1529 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 989201eb68 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 4526563668 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] eed183be53 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 b4f23d9d9e Fix wrong 'modifier' usage. 2026-05-21 09:14:18 +02:00
Benoit Marty dea808ce8d 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 c3a4d64ec6 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
cizra a33d717aa0 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
Benoit Marty df9a3fe9c2 [a11y] Improve accessibility of screen headers. 2026-05-20 15:53:08 +02:00
Benoit Marty c2e357cbcd [a11y] Improve accessibility of screen headers. 2026-05-20 15:52:46 +02:00
Benoit Marty 620f1865e8 [a11y] Improve accessibility of screen headers. 2026-05-20 15:39:11 +02:00
Jorge Martin Espinosa 42566b4b1f 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 3d85cf4fd2 Format 2026-05-20 14:27:38 +02:00
Jorge Martin Espinosa 64d9336901 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
Benoit Marty dc05388cca Update tests. 2026-05-20 10:53:50 +02:00
Benoit Marty 5dd897dae8 Use AnimatedContent instead of reinventing the wheel. 2026-05-19 19:00:58 +02:00
Benoit Marty 75feaa7ee7 [Link new device] Fix and add tests. 2026-05-19 18:43:47 +02:00
Benoit Marty 18bc6a27c4 [Link new device] Improve UI transition between QRCodes. 2026-05-19 18:43:46 +02:00
Benoit Marty a6f7c05458 [Link new device] Automatically rotate the QR Code - limit number of rotation to 10. 2026-05-19 18:43:46 +02:00
Benoit Marty c59b96de66 [Link new device] Automatically rotate the QR Code 2026-05-19 18:43:45 +02:00
Benoit Marty 53fe12bdda "Mark as unread" navigate back to the room list.
#6398
2026-05-19 18:37:32 +02:00
Benoit Marty 882d5577a7 Add "Mark as read", "Mark as unread" in room settings.
#6398
2026-05-19 18:06:11 +02:00
ganfra 6cc2e59436 Merge pull request #6811 from element-hq/feature/live_location_remove_feature_flag
Remove LiveLocationSharing feature flag
2026-05-19 09:16:18 +02:00
Jorge Martin Espinosa e3d1a811d5 Disable biometric unlock when we disable pin code unlock (#6781)
* Disable biometric unlock when we disable pin code unlock
2026-05-18 22:19:22 +02:00
Jorge Martin Espinosa 4e3853a718 Attempt to fix room list item duplicates at midnight (#6793)
* Attempt to fix room list item duplicates at midnight

This seems to happen because of a race condition between `RoomListDataSource.observeDateTimeChanges` and `RoomListDataSource.replaceWith` being called at almost the same time and the first one using the newly received items from observing the timeline items but not updating the cache which will be later reused by `replaceWith`, containing incorrect indices
2026-05-18 22:18:52 +02:00