Commit Graph

146 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 bb2779549e Update design and UX
Update and add tests
Improve preview
2026-05-22 10:29:36 +02:00
Benoit Marty 882d5577a7 Add "Mark as read", "Mark as unread" in room settings.
#6398
2026-05-19 18:06:11 +02:00
Benoit Marty 3ca06d71ef Rename keys on Localazy and add Black theme. 2026-05-12 17:57:55 +02:00
Benoit Marty 5508442222 [Link new device] Implement code confirmation screen. 2026-04-28 12:04:57 +02:00
Benoit Marty 8c5caabed4 Sign in with Classic 2026-04-13 11:16:05 +02:00
ganfra 1c5037f6e2 Add localazy config for location sharing 2026-03-24 11:13:40 +01:00
Benoit Marty faa97ff2f1 Update wording from "Enter recovery key" to "Use recovery key" 2026-03-16 17:19:49 +01:00
Skye Elliot 1e268b0709 Add history sharing badges to room details (#6132)
* feat: Add history sharing badges to room details view

* tests: Add snapshots for history sharing room details badges

* fix: Disable soft-wrapping in badges, use FlowRow

* tests: Add unit test for `RoomDetailsState` and history sharing badges.

* tests: Add `MatrixBadgeAtomNeutralWrappingPreview` to exceptions

* chore: Re-order `MatrixBadgeAtom` previews

* fix: Add `Immutable` annotation to `RoomHistoryVisibility`.

* fix: Correct translation for shared badge
2026-02-06 19:03:52 +00:00
Benoit Marty e8b14e62cf Sync all strings and fix compilation issue. 2026-01-26 14:13:06 +01:00
ganfra e9a55ea79a Sync strings 2026-01-21 19:49:47 +01:00
ganfra 57b89d241f Add proper localization for space room removal UI 2026-01-15 12:14:08 +01:00
ganfra 7645588b0f localazy : sync strings
# Conflicts:
#	features/roomdetails/impl/src/main/res/values/localazy.xml
#	features/securityandprivacy/impl/src/main/res/values/localazy.xml
#	libraries/ui-strings/src/main/res/values/localazy.xml
2025-12-23 15:23:45 +01:00
Benoit Marty 3ea10c2c62 Merge pull request #5909 from element-hq/feature/bma/qrCodeLogin
Link new device using QrCode - First version
2025-12-18 16:08:21 +01:00
Benoit Marty a073117d62 Link new device using QrCode. 2025-12-16 16:14:04 +01:00
ganfra c4a542dbf1 localazy: download strings to match module 2025-12-10 15:14:35 +01:00
ganfra c08de1f904 change(room details edit): move to his own module 2025-12-03 14:30:05 +01:00
ganfra c6ba2f5d10 change(security and privacy) : extract code to a separate module 2025-11-26 12:32:06 +01:00
ElementBot eff221645e Sync Strings (#5792)
* Sync Strings from Localazy

* Update localazy config and sync strings.

* Use the new localazy key.

* Sync strings again

* Sync strings again and fix compilation issue.

* Update screenshots

---------

Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-11-24 17:28:49 +01:00
Benoit Marty 017a259f1c Update notification content 2025-11-14 15:40:31 +01:00
ganfra d9695ae6a0 change(roles and permissions): change title for space 2025-11-05 21:42:51 +01:00
ganfra 83a4457d6e Merge branch 'develop' into feature/fga/role_and_permissions_rework 2025-11-05 20:29:04 +01:00
ganfra ec207a548b change(roles and permissions): fix localazy strings 2025-11-03 18:35:18 +01:00
ganfra 4a56b13ecc feature(space) : update some strings 2025-10-31 15:01:03 +01:00
Benoit Marty a584a5c1c6 Update Localazy config and sync all the strings. 2025-10-07 15:53:53 +02:00
Jorge Martin Espinosa 9714abe032 Add Labs screen for beta testing of public features (#5465)
* Add Labs screen:

- Make `Feature` have an `isInLabs` boolean to distinguish private feature flags from public ones.
- Have `FeatureFlagsService` provide the list of available flags.
- Display the labs item in the settings screen only if there are available public features.
- Remove public feature toggles from developer options.
- Implement the labs screen with the public features.
- Add a clear cache step to the threads feature toggle
- Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-10-07 10:02:54 +00:00
Benoit Marty 2907f762f6 Announcement for Spaces 2025-10-03 00:15:27 +02:00
Benoit Marty 74c2ee46d8 Leave space - Add screen to leave a space. 2025-09-26 14:14:00 +02:00
Benoit Marty fa14e4c106 Add notification troubleshoot test about blocked users. 2025-09-23 08:59:40 +02:00
Benoit Marty 003249faa6 Use string from Localazy. 2025-08-14 11:46:28 +02:00
Benoit Marty 186d06c73e Cleanup Localazy config and do a sync. 2025-08-13 17:41:44 +02:00
ganfra 41cf1afce3 refactor (start chat) : start splitting things (create room, invite people, start chat) 2025-08-13 11:06:42 +02:00
Jorge Martin Espinosa adc61b3826 Add media file limit size warning and media quality selection (#5131)
* Add `VideoCompressorPreset` enum

This represents the different compression presets used for processing videos before uploading them

* Add `VideoCompressorHelper` util class to calculate the scaled output size of the video given an input size and its optimal bitrate

Also add `MediaOptimizationConfig` which will be used to decide how to apply compression in `MediaPreProcessor`

* Add `RustMatrixClient.getMaxFileUploadSize()` function and `MaxUploadSizeProvider` so we can import only this functionality into other components

* Try preloading the max file upload size the first time we get network connectivity - it's a best effort

This should help ensure we'll have this value available later, even if we still need to load it asynchronously.

* Split the `compressMedia` preference into `compressImages` and `compressMediaPreset`

* Modify the media processing parts to use the new classes and utils

* Add `MediaOptimizationSelectorPresenter`, which will retrieve the compression values and the max file upload size, also estimating the compressed video file sizes if needed.

* Add a feature flag to allow selecting the media upload quality per upload

* Integrate the previous changes with the attachments preview screen

Add strings from localazy too.

* Adapt the rest of the app calls to upload media to using the media optimization configs

* Allow modifying the default compression values in advanced settings, based on the feature flag value

* Pass the `fileSize` in `MediaUploadInfo` too, to be able to check it against the `maxUploadSize`

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-08-11 17:22:46 +02:00
Jorge Martin Espinosa 1a335698c0 Force last owner of a room to pass ownership when leaving (#5094)
* Move `ChangeRoles*` classes to their own module so they can be shared

* Hook the change roles screen to the leave room action, add confirmation dialogs

* Use enum instead of sealed interface for `ChangeRoomMemberRolesListType`

* Try to improve communications between nodes

* refactor (leave room) : makes sure to expose only necessary code from api module

* Add `:libraries:previewutils` module to share some test fixtures used for UI previews

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: ganfra <francoisg@matrix.org>
2025-08-05 17:24:14 +02:00
Benoit Marty 36ad2432e1 Use icon for Spaces and update label and navigation bar design and behavior. 2025-07-08 10:28:26 +02:00
Benoit Marty 60083ad5ea Rename module roomlist to home 2025-06-27 15:24:50 +02:00
ganfra e2b1ab2632 Merge branch 'develop' into feature/fga/room-version-upgrade 2025-06-16 20:46:28 +02:00
Benoit Marty 8f94b4cd0e Merge pull request #4845 from element-hq/feature/bma/batteryOptimization
Add a banner to ask the user to disable battery optimization when Event cannot be resolved from Push
2025-06-16 11:19:15 +02:00
Benoit Marty d15a352f74 Improve accessibility of Poll answers. 2025-06-13 10:15:37 +02:00
Benoit Marty d5dfceded7 Battery optimization banner: update wording. 2025-06-12 17:40:38 +02:00
ganfra 94e678a905 feature (room upgrade) : sync translations 2025-06-11 10:46:40 +02:00
ganfra 2e1eb900a4 Merge branch 'develop' into feature/fga/user_moderation_bottomsheet 2025-05-23 17:28:48 +02:00
ganfra b1441e1afd change (member moderation) : sync strings 2025-05-21 18:30:45 +02:00
Benoit Marty 150239bcd8 Merge on boarding module to login module (#4746)
* Move onboarding code to the login module.

* Remove OnBoardingEntryPoint, move the flow to LoginFlowNode

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-05-20 08:54:23 +02:00
ganfra 58d9b12ab3 change (member moderation) : extract in a separate module 2025-05-14 11:19:07 +02:00
ganfra 0b83e66733 Feature : Report room (#4654)
* feature (report room) : introduce all presentation classes.

* feature (report room) : branch entry point in the room list

* refactor (matrix ui) : move some code from appnav to matrix ui

* feature (report room) : add api on room

* feature (report room) : adjust ui

* feature (report room) : branch api

* feature (decline invite and block) : move things around and introduce presentation classes

* feature (decline invite and block) : continue to move things

* feature (report room) : remove reference to "conversation" for now

* feature (report room) : add report room action to room detail screen

* feature (report room) : enabled button state

* feature (report room) : improve code and reuse

* feature (report room) : add feature flag

* feature (report room) : change feature flag to static bool

* feature (report room) : add tests

* feature (report room) : fix ui with new api on ListItem

* feature (report room) : clean up and add more tests.

* Update screenshots

* feature (report room) : more test and fix issue

* feature (report room) : update strings

* feature (report room) : fix konsist preview

* feature (report room) : disable feature

* Update screenshots

* var -> val

* Improve preview of AcceptDeclineInviteView

* Improve preview consistency

* Add missing test on DismissErrorAndHideContent

* Update screenshots

* Add missing tests

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-05-02 12:25:19 +02:00
Benoit Marty c7f0566dc1 Introduce PushHistoryService to store data about the received push (#4573)
* Introduce PushHistoryService to store data about the received push

Add a push database.

* Update screenshots

* Improve preview.

* Update screenshots

* Add missing test.

* Add test for PushHistoryView

* Fix configuration issue.

Was: w: /libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenterTest.kt:35:27 Cannot access class 'PushProvider' in the expression type. While it may work, this case indicates a configuration mistake and can lead to avoidable compilation errors, so it may be forbidden soon. Check your module classpath for missing or conflicting dependencies.

---------

Co-authored-by: ElementBot <android@element.io>
2025-04-11 12:56:54 +02:00
Jorge Martin Espinosa f73c0e42a4 Implement user verification (#4294)
* Add support for starting verification of a user

* Add support for replying to incoming user verification requests

* Add reset recovery key button and previews to `ChooseSelfVerificationModeView`

* Add 'Profile' item in room details screen

* Update screenshots

* Remove `showDeviceVerifiedScreen` parameter from `NavTarget.UseAnotherDevice`

* Allow exiting the FTUE flow, which will close the app. The previous state will be restored when the app is reopened.

* When outgoing verification fails, move to the `Canceled` state. Then, when resetting the state machine state also reset the verification service.

---------

Co-authored-by: ElementBot <android@element.io>
2025-03-10 11:20:17 +01:00
ganfra 0d1a35970d Merge pull request #4353 from element-hq/feature/fga/room_preview_invite_state
[Change] Invited state room preview
2025-03-04 16:45:50 +01:00
ganfra 6af226dc00 change(room directory) : move the the room directory entry from room list filter to start chat screen. 2025-03-04 10:56:16 +01:00