Update advanced settings screen. Replace Read Receipt private mode by Share presence.
This commit is contained in:
parent
365502ac96
commit
016b755830
7 changed files with 21 additions and 19 deletions
|
|
@ -21,7 +21,7 @@ import io.element.android.compound.theme.Theme
|
||||||
sealed interface AdvancedSettingsEvents {
|
sealed interface AdvancedSettingsEvents {
|
||||||
data class SetRichTextEditorEnabled(val enabled: Boolean) : AdvancedSettingsEvents
|
data class SetRichTextEditorEnabled(val enabled: Boolean) : AdvancedSettingsEvents
|
||||||
data class SetDeveloperModeEnabled(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 ChangeTheme : AdvancedSettingsEvents
|
||||||
data object CancelChangeTheme : AdvancedSettingsEvents
|
data object CancelChangeTheme : AdvancedSettingsEvents
|
||||||
data class SetTheme(val theme: Theme) : AdvancedSettingsEvents
|
data class SetTheme(val theme: Theme) : AdvancedSettingsEvents
|
||||||
|
|
|
||||||
|
|
@ -44,8 +44,8 @@ class AdvancedSettingsPresenter @Inject constructor(
|
||||||
val isDeveloperModeEnabled by appPreferencesStore
|
val isDeveloperModeEnabled by appPreferencesStore
|
||||||
.isDeveloperModeEnabledFlow()
|
.isDeveloperModeEnabledFlow()
|
||||||
.collectAsState(initial = false)
|
.collectAsState(initial = false)
|
||||||
val isSendPublicReadReceiptsEnabled by sessionPreferencesStore
|
val isSharePresenceEnabled by sessionPreferencesStore
|
||||||
.isSendPublicReadReceiptsEnabled()
|
.isSharePresenceEnabled()
|
||||||
.collectAsState(initial = true)
|
.collectAsState(initial = true)
|
||||||
val theme by remember {
|
val theme by remember {
|
||||||
appPreferencesStore.getThemeFlow().mapToTheme()
|
appPreferencesStore.getThemeFlow().mapToTheme()
|
||||||
|
|
@ -60,8 +60,8 @@ class AdvancedSettingsPresenter @Inject constructor(
|
||||||
is AdvancedSettingsEvents.SetDeveloperModeEnabled -> localCoroutineScope.launch {
|
is AdvancedSettingsEvents.SetDeveloperModeEnabled -> localCoroutineScope.launch {
|
||||||
appPreferencesStore.setDeveloperModeEnabled(event.enabled)
|
appPreferencesStore.setDeveloperModeEnabled(event.enabled)
|
||||||
}
|
}
|
||||||
is AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled -> localCoroutineScope.launch {
|
is AdvancedSettingsEvents.SetSharePresenceEnabled -> localCoroutineScope.launch {
|
||||||
sessionPreferencesStore.setSendPublicReadReceipts(event.enabled)
|
sessionPreferencesStore.setSharePresence(event.enabled)
|
||||||
}
|
}
|
||||||
AdvancedSettingsEvents.CancelChangeTheme -> showChangeThemeDialog = false
|
AdvancedSettingsEvents.CancelChangeTheme -> showChangeThemeDialog = false
|
||||||
AdvancedSettingsEvents.ChangeTheme -> showChangeThemeDialog = true
|
AdvancedSettingsEvents.ChangeTheme -> showChangeThemeDialog = true
|
||||||
|
|
@ -75,7 +75,7 @@ class AdvancedSettingsPresenter @Inject constructor(
|
||||||
return AdvancedSettingsState(
|
return AdvancedSettingsState(
|
||||||
isRichTextEditorEnabled = isRichTextEditorEnabled,
|
isRichTextEditorEnabled = isRichTextEditorEnabled,
|
||||||
isDeveloperModeEnabled = isDeveloperModeEnabled,
|
isDeveloperModeEnabled = isDeveloperModeEnabled,
|
||||||
isSendPublicReadReceiptsEnabled = isSendPublicReadReceiptsEnabled,
|
isSharePresenceEnabled = isSharePresenceEnabled,
|
||||||
theme = theme,
|
theme = theme,
|
||||||
showChangeThemeDialog = showChangeThemeDialog,
|
showChangeThemeDialog = showChangeThemeDialog,
|
||||||
eventSink = { handleEvents(it) }
|
eventSink = { handleEvents(it) }
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ import io.element.android.compound.theme.Theme
|
||||||
data class AdvancedSettingsState(
|
data class AdvancedSettingsState(
|
||||||
val isRichTextEditorEnabled: Boolean,
|
val isRichTextEditorEnabled: Boolean,
|
||||||
val isDeveloperModeEnabled: Boolean,
|
val isDeveloperModeEnabled: Boolean,
|
||||||
val isSendPublicReadReceiptsEnabled: Boolean,
|
val isSharePresenceEnabled: Boolean,
|
||||||
val theme: Theme,
|
val theme: Theme,
|
||||||
val showChangeThemeDialog: Boolean,
|
val showChangeThemeDialog: Boolean,
|
||||||
val eventSink: (AdvancedSettingsEvents) -> Unit
|
val eventSink: (AdvancedSettingsEvents) -> Unit
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ fun aAdvancedSettingsState(
|
||||||
) = AdvancedSettingsState(
|
) = AdvancedSettingsState(
|
||||||
isRichTextEditorEnabled = isRichTextEditorEnabled,
|
isRichTextEditorEnabled = isRichTextEditorEnabled,
|
||||||
isDeveloperModeEnabled = isDeveloperModeEnabled,
|
isDeveloperModeEnabled = isDeveloperModeEnabled,
|
||||||
isSendPublicReadReceiptsEnabled = isSendPublicReadReceiptsEnabled,
|
isSharePresenceEnabled = isSendPublicReadReceiptsEnabled,
|
||||||
theme = Theme.System,
|
theme = Theme.System,
|
||||||
showChangeThemeDialog = showChangeThemeDialog,
|
showChangeThemeDialog = showChangeThemeDialog,
|
||||||
eventSink = {}
|
eventSink = {}
|
||||||
|
|
|
||||||
|
|
@ -83,15 +83,15 @@ fun AdvancedSettingsView(
|
||||||
)
|
)
|
||||||
ListItem(
|
ListItem(
|
||||||
headlineContent = {
|
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 = {
|
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(
|
trailingContent = ListItemContent.Switch(
|
||||||
checked = state.isSendPublicReadReceiptsEnabled,
|
checked = state.isSharePresenceEnabled,
|
||||||
),
|
),
|
||||||
onClick = { state.eventSink(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(!state.isSendPublicReadReceiptsEnabled)) }
|
onClick = { state.eventSink(AdvancedSettingsEvents.SetSharePresenceEnabled(!state.isSharePresenceEnabled)) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@
|
||||||
<string name="screen_advanced_settings_rich_text_editor_description">"Disable the rich text editor to type Markdown manually."</string>
|
<string name="screen_advanced_settings_rich_text_editor_description">"Disable the rich text editor to type Markdown manually."</string>
|
||||||
<string name="screen_advanced_settings_send_read_receipts">"Read receipts"</string>
|
<string name="screen_advanced_settings_send_read_receipts">"Read receipts"</string>
|
||||||
<string name="screen_advanced_settings_send_read_receipts_description">"If turned off, your read receipts won\'t be sent to anyone. You will still receive read receipts from other users."</string>
|
<string name="screen_advanced_settings_send_read_receipts_description">"If turned off, your read receipts won\'t be sent to anyone. You will still receive read receipts from other users."</string>
|
||||||
|
<string name="screen_advanced_settings_share_presence">"Share presence"</string>
|
||||||
|
<string name="screen_advanced_settings_share_presence_description">"If turned off, you won’t be able to send or receive read receipts or typing notifications"</string>
|
||||||
<string name="screen_advanced_settings_view_source_description">"Enable option to view message source in the timeline."</string>
|
<string name="screen_advanced_settings_view_source_description">"Enable option to view message source in the timeline."</string>
|
||||||
<string name="screen_edit_profile_display_name">"Display name"</string>
|
<string name="screen_edit_profile_display_name">"Display name"</string>
|
||||||
<string name="screen_edit_profile_display_name_placeholder">"Your display name"</string>
|
<string name="screen_edit_profile_display_name_placeholder">"Your display name"</string>
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ class AdvancedSettingsPresenterTest {
|
||||||
assertThat(initialState.isDeveloperModeEnabled).isFalse()
|
assertThat(initialState.isDeveloperModeEnabled).isFalse()
|
||||||
assertThat(initialState.isRichTextEditorEnabled).isFalse()
|
assertThat(initialState.isRichTextEditorEnabled).isFalse()
|
||||||
assertThat(initialState.showChangeThemeDialog).isFalse()
|
assertThat(initialState.showChangeThemeDialog).isFalse()
|
||||||
assertThat(initialState.isSendPublicReadReceiptsEnabled).isTrue()
|
assertThat(initialState.isSharePresenceEnabled).isTrue()
|
||||||
assertThat(initialState.theme).isEqualTo(Theme.System)
|
assertThat(initialState.theme).isEqualTo(Theme.System)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -79,17 +79,17 @@ class AdvancedSettingsPresenterTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - send public read receipts off on`() = runTest {
|
fun `present - share presence off on`() = runTest {
|
||||||
val presenter = createAdvancedSettingsPresenter()
|
val presenter = createAdvancedSettingsPresenter()
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
moleculeFlow(RecompositionMode.Immediate) {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitLastSequentialItem()
|
val initialState = awaitLastSequentialItem()
|
||||||
assertThat(initialState.isSendPublicReadReceiptsEnabled).isTrue()
|
assertThat(initialState.isSharePresenceEnabled).isTrue()
|
||||||
initialState.eventSink.invoke(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(false))
|
initialState.eventSink.invoke(AdvancedSettingsEvents.SetSharePresenceEnabled(false))
|
||||||
assertThat(awaitItem().isSendPublicReadReceiptsEnabled).isFalse()
|
assertThat(awaitItem().isSharePresenceEnabled).isFalse()
|
||||||
initialState.eventSink.invoke(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(true))
|
initialState.eventSink.invoke(AdvancedSettingsEvents.SetSharePresenceEnabled(true))
|
||||||
assertThat(awaitItem().isSendPublicReadReceiptsEnabled).isTrue()
|
assertThat(awaitItem().isSharePresenceEnabled).isTrue()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue