From 23fb7811f35aed90fb84bd2148cbbbaf9afd5ab9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 5 Feb 2024 13:06:50 +0100 Subject: [PATCH] Update advanced settings screen. Replace Read Receipt private mode by Share presence. --- .../impl/advanced/AdvancedSettingsEvents.kt | 2 +- .../impl/advanced/AdvancedSettingsPresenter.kt | 10 +++++----- .../impl/advanced/AdvancedSettingsState.kt | 2 +- .../impl/advanced/AdvancedSettingsStateProvider.kt | 2 +- .../impl/advanced/AdvancedSettingsView.kt | 8 ++++---- .../impl/src/main/res/values/localazy.xml | 2 ++ .../impl/advanced/AdvancedSettingsPresenterTest.kt | 14 +++++++------- 7 files changed, 21 insertions(+), 19 deletions(-) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsEvents.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsEvents.kt index d67a594dd2..8ee433f630 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsEvents.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsEvents.kt @@ -21,7 +21,7 @@ import io.element.android.compound.theme.Theme sealed interface AdvancedSettingsEvents { data class SetRichTextEditorEnabled(val enabled: Boolean) : AdvancedSettingsEvents data class SetDeveloperModeEnabled(val enabled: Boolean) : AdvancedSettingsEvents - data class SetSendPublicReadReceiptsEnabled(val enabled: Boolean) : AdvancedSettingsEvents + data class SetSharePresenceEnabled(val enabled: Boolean) : AdvancedSettingsEvents data object ChangeTheme : AdvancedSettingsEvents data object CancelChangeTheme : AdvancedSettingsEvents data class SetTheme(val theme: Theme) : AdvancedSettingsEvents diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt index 2ac5b664b5..2f0c2b7417 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt @@ -44,8 +44,8 @@ class AdvancedSettingsPresenter @Inject constructor( val isDeveloperModeEnabled by appPreferencesStore .isDeveloperModeEnabledFlow() .collectAsState(initial = false) - val isSendPublicReadReceiptsEnabled by sessionPreferencesStore - .isSendPublicReadReceiptsEnabled() + val isSharePresenceEnabled by sessionPreferencesStore + .isSharePresenceEnabled() .collectAsState(initial = true) val theme by remember { appPreferencesStore.getThemeFlow().mapToTheme() @@ -60,8 +60,8 @@ class AdvancedSettingsPresenter @Inject constructor( is AdvancedSettingsEvents.SetDeveloperModeEnabled -> localCoroutineScope.launch { appPreferencesStore.setDeveloperModeEnabled(event.enabled) } - is AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled -> localCoroutineScope.launch { - sessionPreferencesStore.setSendPublicReadReceipts(event.enabled) + is AdvancedSettingsEvents.SetSharePresenceEnabled -> localCoroutineScope.launch { + sessionPreferencesStore.setSharePresence(event.enabled) } AdvancedSettingsEvents.CancelChangeTheme -> showChangeThemeDialog = false AdvancedSettingsEvents.ChangeTheme -> showChangeThemeDialog = true @@ -75,7 +75,7 @@ class AdvancedSettingsPresenter @Inject constructor( return AdvancedSettingsState( isRichTextEditorEnabled = isRichTextEditorEnabled, isDeveloperModeEnabled = isDeveloperModeEnabled, - isSendPublicReadReceiptsEnabled = isSendPublicReadReceiptsEnabled, + isSharePresenceEnabled = isSharePresenceEnabled, theme = theme, showChangeThemeDialog = showChangeThemeDialog, eventSink = { handleEvents(it) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsState.kt index 0ea04185f7..469f8a630c 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsState.kt @@ -21,7 +21,7 @@ import io.element.android.compound.theme.Theme data class AdvancedSettingsState( val isRichTextEditorEnabled: Boolean, val isDeveloperModeEnabled: Boolean, - val isSendPublicReadReceiptsEnabled: Boolean, + val isSharePresenceEnabled: Boolean, val theme: Theme, val showChangeThemeDialog: Boolean, val eventSink: (AdvancedSettingsEvents) -> Unit diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsStateProvider.kt index acfd9bb026..5e255fc091 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsStateProvider.kt @@ -38,7 +38,7 @@ fun aAdvancedSettingsState( ) = AdvancedSettingsState( isRichTextEditorEnabled = isRichTextEditorEnabled, isDeveloperModeEnabled = isDeveloperModeEnabled, - isSendPublicReadReceiptsEnabled = isSendPublicReadReceiptsEnabled, + isSharePresenceEnabled = isSendPublicReadReceiptsEnabled, theme = Theme.System, showChangeThemeDialog = showChangeThemeDialog, eventSink = {} diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt index 7079a4daea..9e739c3a00 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt @@ -83,15 +83,15 @@ fun AdvancedSettingsView( ) ListItem( headlineContent = { - Text(text = stringResource(id = R.string.screen_advanced_settings_send_read_receipts)) + Text(text = stringResource(id = R.string.screen_advanced_settings_share_presence)) }, supportingContent = { - Text(text = stringResource(id = R.string.screen_advanced_settings_send_read_receipts_description)) + Text(text = stringResource(id = R.string.screen_advanced_settings_share_presence_description)) }, trailingContent = ListItemContent.Switch( - checked = state.isSendPublicReadReceiptsEnabled, + checked = state.isSharePresenceEnabled, ), - onClick = { state.eventSink(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(!state.isSendPublicReadReceiptsEnabled)) } + onClick = { state.eventSink(AdvancedSettingsEvents.SetSharePresenceEnabled(!state.isSharePresenceEnabled)) } ) } diff --git a/features/preferences/impl/src/main/res/values/localazy.xml b/features/preferences/impl/src/main/res/values/localazy.xml index 607329332f..70a1b032a9 100644 --- a/features/preferences/impl/src/main/res/values/localazy.xml +++ b/features/preferences/impl/src/main/res/values/localazy.xml @@ -8,6 +8,8 @@ "Disable the rich text editor to type Markdown manually." "Read receipts" "If turned off, your read receipts won\'t be sent to anyone. You will still receive read receipts from other users." + "Share presence" + "If turned off, you won’t be able to send or receive read receipts or typing notifications" "Enable option to view message source in the timeline." "Display name" "Your display name" diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenterTest.kt index a042d792b8..1745d57396 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenterTest.kt @@ -43,7 +43,7 @@ class AdvancedSettingsPresenterTest { assertThat(initialState.isDeveloperModeEnabled).isFalse() assertThat(initialState.isRichTextEditorEnabled).isFalse() assertThat(initialState.showChangeThemeDialog).isFalse() - assertThat(initialState.isSendPublicReadReceiptsEnabled).isTrue() + assertThat(initialState.isSharePresenceEnabled).isTrue() assertThat(initialState.theme).isEqualTo(Theme.System) } } @@ -79,17 +79,17 @@ class AdvancedSettingsPresenterTest { } @Test - fun `present - send public read receipts off on`() = runTest { + fun `present - share presence off on`() = runTest { val presenter = createAdvancedSettingsPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { val initialState = awaitLastSequentialItem() - assertThat(initialState.isSendPublicReadReceiptsEnabled).isTrue() - initialState.eventSink.invoke(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(false)) - assertThat(awaitItem().isSendPublicReadReceiptsEnabled).isFalse() - initialState.eventSink.invoke(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(true)) - assertThat(awaitItem().isSendPublicReadReceiptsEnabled).isTrue() + assertThat(initialState.isSharePresenceEnabled).isTrue() + initialState.eventSink.invoke(AdvancedSettingsEvents.SetSharePresenceEnabled(false)) + assertThat(awaitItem().isSharePresenceEnabled).isFalse() + initialState.eventSink.invoke(AdvancedSettingsEvents.SetSharePresenceEnabled(true)) + assertThat(awaitItem().isSharePresenceEnabled).isTrue() } }