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>
This commit is contained in:
Benoit Marty
2026-05-28 16:54:12 +02:00
committed by GitHub
parent bdedf41f99
commit c88edc9621
79 changed files with 3135 additions and 139 deletions
@@ -480,10 +480,6 @@ Haluatko varmasti jatkaa?"</string>
<string name="screen_create_poll_options_section_title">"Vaihtoehdot"</string>
<string name="screen_create_poll_remove_accessibility_label">"Poista %1$s"</string>
<string name="screen_create_poll_settings_section_title">"Asetukset"</string>
<plurals name="screen_image_edition_a11y_rotation_state">
<item quantity="one">"%1$d aste"</item>
<item quantity="other">"%1$d astetta"</item>
</plurals>
<string name="screen_live_location_sheet_nobody_sharing">"Kukaan ei jaa sijaintiaan"</string>
<string name="screen_live_location_sheet_sharing_live_location">"Jaetaan reaaliaikaista sijaintia"</string>
<plurals name="screen_live_location_sheet_subtitle">
@@ -480,10 +480,6 @@ Raison : %1$s."</string>
<string name="screen_create_poll_options_section_title">"Options"</string>
<string name="screen_create_poll_remove_accessibility_label">"Supprimer %1$s"</string>
<string name="screen_create_poll_settings_section_title">"Paramètres"</string>
<plurals name="screen_image_edition_a11y_rotation_state">
<item quantity="one">"%1$d degré"</item>
<item quantity="other">"%1$d degrés"</item>
</plurals>
<string name="screen_live_location_sheet_nobody_sharing">"Personne ne partage sa position"</string>
<string name="screen_live_location_sheet_sharing_live_location">"Partage de la position en direct"</string>
<plurals name="screen_live_location_sheet_subtitle">
@@ -471,11 +471,6 @@
<string name="screen_create_poll_options_section_title">"選択肢"</string>
<string name="screen_create_poll_remove_accessibility_label">"%1$s を削除"</string>
<string name="screen_create_poll_settings_section_title">"設定"</string>
<string name="screen_image_edition_a11y_rotate_to_the_left">"画像を左に回転"</string>
<plurals name="screen_image_edition_a11y_rotation_state">
<item quantity="other">"%1$d°"</item>
</plurals>
<string name="screen_image_edition_title">"写真を編集"</string>
<string name="screen_live_location_sheet_nobody_sharing">"誰も位置情報を共有していません"</string>
<string name="screen_live_location_sheet_sharing_live_location">"ライブ位置情報を共有しています"</string>
<plurals name="screen_live_location_sheet_subtitle">
@@ -489,13 +489,6 @@ Czy na pewno chcesz kontynuować?"</string>
<string name="screen_create_poll_options_section_title">"Opcje"</string>
<string name="screen_create_poll_remove_accessibility_label">"Usuń %1$s"</string>
<string name="screen_create_poll_settings_section_title">"Ustawienia"</string>
<string name="screen_image_edition_a11y_rotate_to_the_left">"Obróć obraz w lewo"</string>
<plurals name="screen_image_edition_a11y_rotation_state">
<item quantity="one">"%1$d stopień"</item>
<item quantity="few">"%1$d stopnie"</item>
<item quantity="many">"%1$d stopni"</item>
</plurals>
<string name="screen_image_edition_title">"Edytuj zdjęcie"</string>
<string name="screen_live_location_sheet_nobody_sharing">"Nikt nie udostępnia swojej lokalizacji"</string>
<string name="screen_live_location_sheet_sharing_live_location">"Udostępnianie lokalizacji na żywo"</string>
<plurals name="screen_live_location_sheet_subtitle">
@@ -469,11 +469,6 @@
<string name="screen_create_poll_options_section_title">"选项"</string>
<string name="screen_create_poll_remove_accessibility_label">"移除 %1$s"</string>
<string name="screen_create_poll_settings_section_title">"设置"</string>
<string name="screen_image_edition_a11y_rotate_to_the_left">"向左旋转图像"</string>
<plurals name="screen_image_edition_a11y_rotation_state">
<item quantity="other">"%1$d 度"</item>
</plurals>
<string name="screen_image_edition_title">"编辑照片"</string>
<string name="screen_live_location_sheet_nobody_sharing">"目前无人分享其位置"</string>
<string name="screen_live_location_sheet_sharing_live_location">"共享实时位置"</string>
<plurals name="screen_live_location_sheet_subtitle">
@@ -481,12 +481,6 @@ Are you sure you want to continue?"</string>
<string name="screen_create_poll_options_section_title">"Options"</string>
<string name="screen_create_poll_remove_accessibility_label">"Remove %1$s"</string>
<string name="screen_create_poll_settings_section_title">"Settings"</string>
<string name="screen_image_edition_a11y_rotate_to_the_left">"Rotate the image to the left"</string>
<plurals name="screen_image_edition_a11y_rotation_state">
<item quantity="one">"%1$d degree"</item>
<item quantity="other">"%1$d degrees"</item>
</plurals>
<string name="screen_image_edition_title">"Edit photo"</string>
<string name="screen_live_location_sheet_nobody_sharing">"Nobody is sharing their location"</string>
<string name="screen_live_location_sheet_sharing_live_location">"Sharing live location"</string>
<plurals name="screen_live_location_sheet_subtitle">