AdvancedSettingsEvents -> AdvancedSettingsEvent

This commit is contained in:
Benoit Marty
2026-08-25 10:07:35 +02:00
parent 87af3b85b3
commit e6be199d4a
7 changed files with 72 additions and 72 deletions
@@ -11,14 +11,14 @@ package io.element.android.features.preferences.impl.advanced
import io.element.android.libraries.matrix.api.media.MediaPreviewValue import io.element.android.libraries.matrix.api.media.MediaPreviewValue
import io.element.android.libraries.preferences.api.store.VideoCompressionPreset import io.element.android.libraries.preferences.api.store.VideoCompressionPreset
sealed interface AdvancedSettingsEvents { sealed interface AdvancedSettingsEvent {
data class SetDeveloperModeEnabled(val enabled: Boolean) : AdvancedSettingsEvents data class SetDeveloperModeEnabled(val enabled: Boolean) : AdvancedSettingsEvent
data class SetSharePresenceEnabled(val enabled: Boolean) : AdvancedSettingsEvents data class SetSharePresenceEnabled(val enabled: Boolean) : AdvancedSettingsEvent
data class SetCompressMedia(val compress: Boolean) : AdvancedSettingsEvents data class SetCompressMedia(val compress: Boolean) : AdvancedSettingsEvent
data class SetCompressImages(val compress: Boolean) : AdvancedSettingsEvents data class SetCompressImages(val compress: Boolean) : AdvancedSettingsEvent
data class SetVideoUploadQuality(val videoPreset: VideoCompressionPreset) : AdvancedSettingsEvents data class SetVideoUploadQuality(val videoPreset: VideoCompressionPreset) : AdvancedSettingsEvent
data class SetTheme(val theme: ThemeOption) : AdvancedSettingsEvents data class SetTheme(val theme: ThemeOption) : AdvancedSettingsEvent
data class SetTimelineMediaPreviewValue(val value: MediaPreviewValue) : AdvancedSettingsEvents data class SetTimelineMediaPreviewValue(val value: MediaPreviewValue) : AdvancedSettingsEvent
data class SetHideInviteAvatars(val value: Boolean) : AdvancedSettingsEvents data class SetHideInviteAvatars(val value: Boolean) : AdvancedSettingsEvent
data class SetLiveLocationMinimumDistanceUpdate(val value: Int) : AdvancedSettingsEvents data class SetLiveLocationMinimumDistanceUpdate(val value: Int) : AdvancedSettingsEvent
} }
@@ -100,18 +100,18 @@ class AdvancedSettingsPresenter(
}.collect() }.collect()
} }
fun handleEvent(event: AdvancedSettingsEvents) { fun handleEvent(event: AdvancedSettingsEvent) {
when (event) { when (event) {
is AdvancedSettingsEvents.SetDeveloperModeEnabled -> sessionCoroutineScope.launch { is AdvancedSettingsEvent.SetDeveloperModeEnabled -> sessionCoroutineScope.launch {
appPreferencesStore.setDeveloperModeEnabled(event.enabled) appPreferencesStore.setDeveloperModeEnabled(event.enabled)
} }
is AdvancedSettingsEvents.SetSharePresenceEnabled -> sessionCoroutineScope.launch { is AdvancedSettingsEvent.SetSharePresenceEnabled -> sessionCoroutineScope.launch {
sessionPreferencesStore.setSharePresence(event.enabled) sessionPreferencesStore.setSharePresence(event.enabled)
} }
is AdvancedSettingsEvents.SetCompressMedia -> sessionCoroutineScope.launch { is AdvancedSettingsEvent.SetCompressMedia -> sessionCoroutineScope.launch {
sessionPreferencesStore.setOptimizeImages(event.compress) sessionPreferencesStore.setOptimizeImages(event.compress)
} }
is AdvancedSettingsEvents.SetTheme -> sessionCoroutineScope.launch { is AdvancedSettingsEvent.SetTheme -> sessionCoroutineScope.launch {
when (event.theme) { when (event.theme) {
ThemeOption.System -> appPreferencesStore.setTheme(Theme.System.name) ThemeOption.System -> appPreferencesStore.setTheme(Theme.System.name)
ThemeOption.Dark -> appPreferencesStore.setTheme(Theme.Dark.name) ThemeOption.Dark -> appPreferencesStore.setTheme(Theme.Dark.name)
@@ -119,15 +119,15 @@ class AdvancedSettingsPresenter(
ThemeOption.Light -> appPreferencesStore.setTheme(Theme.Light.name) ThemeOption.Light -> appPreferencesStore.setTheme(Theme.Light.name)
} }
} }
is AdvancedSettingsEvents.SetHideInviteAvatars -> mediaPreviewConfigStateStore.setHideInviteAvatars(event.value) is AdvancedSettingsEvent.SetHideInviteAvatars -> mediaPreviewConfigStateStore.setHideInviteAvatars(event.value)
is AdvancedSettingsEvents.SetTimelineMediaPreviewValue -> mediaPreviewConfigStateStore.setTimelineMediaPreviewValue(event.value) is AdvancedSettingsEvent.SetTimelineMediaPreviewValue -> mediaPreviewConfigStateStore.setTimelineMediaPreviewValue(event.value)
is AdvancedSettingsEvents.SetLiveLocationMinimumDistanceUpdate -> sessionCoroutineScope.launch { is AdvancedSettingsEvent.SetLiveLocationMinimumDistanceUpdate -> sessionCoroutineScope.launch {
appPreferencesStore.setLiveLocationMinimumDistanceInMetersUpdate(event.value) appPreferencesStore.setLiveLocationMinimumDistanceInMetersUpdate(event.value)
} }
is AdvancedSettingsEvents.SetCompressImages -> sessionCoroutineScope.launch { is AdvancedSettingsEvent.SetCompressImages -> sessionCoroutineScope.launch {
sessionPreferencesStore.setOptimizeImages(event.compress) sessionPreferencesStore.setOptimizeImages(event.compress)
} }
is AdvancedSettingsEvents.SetVideoUploadQuality -> sessionCoroutineScope.launch { is AdvancedSettingsEvent.SetVideoUploadQuality -> sessionCoroutineScope.launch {
sessionPreferencesStore.setVideoCompressionPreset(event.videoPreset) sessionPreferencesStore.setVideoCompressionPreset(event.videoPreset)
} }
} }
@@ -24,7 +24,7 @@ data class AdvancedSettingsState(
val availableThemeOptions: ImmutableList<ThemeOption>, val availableThemeOptions: ImmutableList<ThemeOption>,
val mediaPreviewConfigState: MediaPreviewConfigState, val mediaPreviewConfigState: MediaPreviewConfigState,
val liveLocationMinimumDistanceUpdate: Int?, val liveLocationMinimumDistanceUpdate: Int?,
val eventSink: (AdvancedSettingsEvents) -> Unit val eventSink: (AdvancedSettingsEvent) -> Unit
) )
sealed interface MediaOptimizationState { sealed interface MediaOptimizationState {
@@ -44,7 +44,7 @@ fun aAdvancedSettingsState(
liveLocationMinimumDistanceUpdate: Int? = 50, liveLocationMinimumDistanceUpdate: Int? = 50,
setTimelineMediaPreviewAction: AsyncAction<Unit> = AsyncAction.Uninitialized, setTimelineMediaPreviewAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
setHideInviteAvatarsAction: AsyncAction<Unit> = AsyncAction.Uninitialized, setHideInviteAvatarsAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
eventSink: (AdvancedSettingsEvents) -> Unit = {}, eventSink: (AdvancedSettingsEvent) -> Unit = {},
) = AdvancedSettingsState( ) = AdvancedSettingsState(
isDeveloperModeEnabled = isDeveloperModeEnabled, isDeveloperModeEnabled = isDeveloperModeEnabled,
isSharePresenceEnabled = isSharePresenceEnabled, isSharePresenceEnabled = isSharePresenceEnabled,
@@ -89,7 +89,7 @@ fun AdvancedSettingsView(
selectedOption = state.theme, selectedOption = state.theme,
options = state.availableThemeOptions, options = state.availableThemeOptions,
onSelectOption = { themeOption -> onSelectOption = { themeOption ->
state.eventSink(AdvancedSettingsEvents.SetTheme(themeOption)) state.eventSink(AdvancedSettingsEvent.SetTheme(themeOption))
} }
) )
ListItem( ListItem(
@@ -102,7 +102,7 @@ fun AdvancedSettingsView(
trailingContent = ListItemContent.Switch( trailingContent = ListItemContent.Switch(
checked = state.isDeveloperModeEnabled, checked = state.isDeveloperModeEnabled,
), ),
onClick = { state.eventSink(AdvancedSettingsEvents.SetDeveloperModeEnabled(!state.isDeveloperModeEnabled)) } onClick = { state.eventSink(AdvancedSettingsEvent.SetDeveloperModeEnabled(!state.isDeveloperModeEnabled)) }
) )
ListItem( ListItem(
content = { content = {
@@ -114,7 +114,7 @@ fun AdvancedSettingsView(
trailingContent = ListItemContent.Switch( trailingContent = ListItemContent.Switch(
checked = state.isSharePresenceEnabled, checked = state.isSharePresenceEnabled,
), ),
onClick = { state.eventSink(AdvancedSettingsEvents.SetSharePresenceEnabled(!state.isSharePresenceEnabled)) } onClick = { state.eventSink(AdvancedSettingsEvent.SetSharePresenceEnabled(!state.isSharePresenceEnabled)) }
) )
val compressImages = state.mediaOptimizationState?.shouldCompressImages val compressImages = state.mediaOptimizationState?.shouldCompressImages
@@ -140,7 +140,7 @@ fun AdvancedSettingsView(
Interaction.Name.MobileSettingsOptimizeMediaUploadsDisabled Interaction.Name.MobileSettingsOptimizeMediaUploadsDisabled
} }
) )
state.eventSink(AdvancedSettingsEvents.SetCompressMedia(newValue)) state.eventSink(AdvancedSettingsEvent.SetCompressMedia(newValue))
} }
) )
} }
@@ -164,7 +164,7 @@ fun AdvancedSettingsView(
Interaction.Name.MobileSettingsOptimizeMediaUploadsDisabled Interaction.Name.MobileSettingsOptimizeMediaUploadsDisabled
} }
) )
state.eventSink(AdvancedSettingsEvents.SetCompressMedia(newValue)) state.eventSink(AdvancedSettingsEvent.SetCompressMedia(newValue))
} }
) )
@@ -193,7 +193,7 @@ fun AdvancedSettingsView(
VideoQualitySelectorDialog( VideoQualitySelectorDialog(
selectedPreset = state.mediaOptimizationState.videoPreset, selectedPreset = state.mediaOptimizationState.videoPreset,
onSubmit = { preset -> onSubmit = { preset ->
state.eventSink(AdvancedSettingsEvents.SetVideoUploadQuality(preset)) state.eventSink(AdvancedSettingsEvent.SetVideoUploadQuality(preset))
displaySelectorDialog = false displaySelectorDialog = false
}, },
onDismiss = { displaySelectorDialog = false }, onDismiss = { displaySelectorDialog = false },
@@ -207,7 +207,7 @@ fun AdvancedSettingsView(
LiveLocationUpdatesSection( LiveLocationUpdatesSection(
value = state.liveLocationMinimumDistanceUpdate, value = state.liveLocationMinimumDistanceUpdate,
onSaveValue = { value -> onSaveValue = { value ->
state.eventSink(AdvancedSettingsEvents.SetLiveLocationMinimumDistanceUpdate(value)) state.eventSink(AdvancedSettingsEvent.SetLiveLocationMinimumDistanceUpdate(value))
}, },
onOpenAppPermissionsClick = onOpenAppSettingsClick, onOpenAppPermissionsClick = onOpenAppSettingsClick,
) )
@@ -286,7 +286,7 @@ private fun ModerationAndSafety(
title = stringResource(R.string.screen_advanced_settings_hide_invite_avatars_toggle_title), title = stringResource(R.string.screen_advanced_settings_hide_invite_avatars_toggle_title),
isChecked = state.mediaPreviewConfigState.hideInviteAvatars, isChecked = state.mediaPreviewConfigState.hideInviteAvatars,
onCheckedChange = { onCheckedChange = {
state.eventSink(AdvancedSettingsEvents.SetHideInviteAvatars(it)) state.eventSink(AdvancedSettingsEvent.SetHideInviteAvatars(it))
}, },
enabled = !state.mediaPreviewConfigState.setHideInviteAvatarsAction.isLoading() enabled = !state.mediaPreviewConfigState.setHideInviteAvatarsAction.isLoading()
) )
@@ -307,7 +307,7 @@ private fun ModerationAndSafety(
compact = true compact = true
), ),
onClick = { onClick = {
state.eventSink(AdvancedSettingsEvents.SetTimelineMediaPreviewValue(MediaPreviewValue.Off)) state.eventSink(AdvancedSettingsEvent.SetTimelineMediaPreviewValue(MediaPreviewValue.Off))
}, },
enabled = !state.mediaPreviewConfigState.setTimelineMediaPreviewAction.isLoading() enabled = !state.mediaPreviewConfigState.setTimelineMediaPreviewAction.isLoading()
) )
@@ -318,7 +318,7 @@ private fun ModerationAndSafety(
compact = true compact = true
), ),
onClick = { onClick = {
state.eventSink(AdvancedSettingsEvents.SetTimelineMediaPreviewValue(MediaPreviewValue.Private)) state.eventSink(AdvancedSettingsEvent.SetTimelineMediaPreviewValue(MediaPreviewValue.Private))
}, },
enabled = !state.mediaPreviewConfigState.setTimelineMediaPreviewAction.isLoading() enabled = !state.mediaPreviewConfigState.setTimelineMediaPreviewAction.isLoading()
) )
@@ -329,7 +329,7 @@ private fun ModerationAndSafety(
compact = true compact = true
), ),
onClick = { onClick = {
state.eventSink(AdvancedSettingsEvents.SetTimelineMediaPreviewValue(MediaPreviewValue.On)) state.eventSink(AdvancedSettingsEvent.SetTimelineMediaPreviewValue(MediaPreviewValue.On))
}, },
enabled = !state.mediaPreviewConfigState.setTimelineMediaPreviewAction.isLoading() enabled = !state.mediaPreviewConfigState.setTimelineMediaPreviewAction.isLoading()
) )
@@ -71,11 +71,11 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat(isDeveloperModeEnabled).isFalse() assertThat(isDeveloperModeEnabled).isFalse()
eventSink(AdvancedSettingsEvents.SetDeveloperModeEnabled(true)) eventSink(AdvancedSettingsEvent.SetDeveloperModeEnabled(true))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(isDeveloperModeEnabled).isTrue() assertThat(isDeveloperModeEnabled).isTrue()
eventSink(AdvancedSettingsEvents.SetDeveloperModeEnabled(false)) eventSink(AdvancedSettingsEvent.SetDeveloperModeEnabled(false))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(isDeveloperModeEnabled).isFalse() assertThat(isDeveloperModeEnabled).isFalse()
@@ -94,11 +94,11 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat(isSharePresenceEnabled).isTrue() assertThat(isSharePresenceEnabled).isTrue()
eventSink(AdvancedSettingsEvents.SetSharePresenceEnabled(false)) eventSink(AdvancedSettingsEvent.SetSharePresenceEnabled(false))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(isSharePresenceEnabled).isFalse() assertThat(isSharePresenceEnabled).isFalse()
eventSink(AdvancedSettingsEvents.SetSharePresenceEnabled(true)) eventSink(AdvancedSettingsEvent.SetSharePresenceEnabled(true))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(isSharePresenceEnabled).isTrue() assertThat(isSharePresenceEnabled).isTrue()
@@ -117,11 +117,11 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.AllMedia).isEnabled).isTrue() assertThat((mediaOptimizationState as MediaOptimizationState.AllMedia).isEnabled).isTrue()
eventSink(AdvancedSettingsEvents.SetCompressMedia(false)) eventSink(AdvancedSettingsEvent.SetCompressMedia(false))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.AllMedia).isEnabled).isFalse() assertThat((mediaOptimizationState as MediaOptimizationState.AllMedia).isEnabled).isFalse()
eventSink(AdvancedSettingsEvents.SetCompressMedia(true)) eventSink(AdvancedSettingsEvent.SetCompressMedia(true))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.AllMedia).isEnabled).isTrue() assertThat((mediaOptimizationState as MediaOptimizationState.AllMedia).isEnabled).isTrue()
@@ -144,11 +144,11 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.Split).compressImages).isTrue() assertThat((mediaOptimizationState as MediaOptimizationState.Split).compressImages).isTrue()
eventSink(AdvancedSettingsEvents.SetCompressImages(false)) eventSink(AdvancedSettingsEvent.SetCompressImages(false))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.Split).compressImages).isFalse() assertThat((mediaOptimizationState as MediaOptimizationState.Split).compressImages).isFalse()
eventSink(AdvancedSettingsEvents.SetCompressImages(true)) eventSink(AdvancedSettingsEvent.SetCompressImages(true))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.Split).compressImages).isTrue() assertThat((mediaOptimizationState as MediaOptimizationState.Split).compressImages).isTrue()
@@ -171,11 +171,11 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.Split).videoPreset).isEqualTo(VideoCompressionPreset.STANDARD) assertThat((mediaOptimizationState as MediaOptimizationState.Split).videoPreset).isEqualTo(VideoCompressionPreset.STANDARD)
eventSink(AdvancedSettingsEvents.SetVideoUploadQuality(VideoCompressionPreset.LOW)) eventSink(AdvancedSettingsEvent.SetVideoUploadQuality(VideoCompressionPreset.LOW))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.Split).videoPreset).isEqualTo(VideoCompressionPreset.LOW) assertThat((mediaOptimizationState as MediaOptimizationState.Split).videoPreset).isEqualTo(VideoCompressionPreset.LOW)
eventSink(AdvancedSettingsEvents.SetVideoUploadQuality(VideoCompressionPreset.HIGH)) eventSink(AdvancedSettingsEvent.SetVideoUploadQuality(VideoCompressionPreset.HIGH))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat((mediaOptimizationState as MediaOptimizationState.Split).videoPreset).isEqualTo(VideoCompressionPreset.HIGH) assertThat((mediaOptimizationState as MediaOptimizationState.Split).videoPreset).isEqualTo(VideoCompressionPreset.HIGH)
@@ -194,15 +194,15 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat(theme).isEqualTo(ThemeOption.System) assertThat(theme).isEqualTo(ThemeOption.System)
eventSink(AdvancedSettingsEvents.SetTheme(ThemeOption.Dark)) eventSink(AdvancedSettingsEvent.SetTheme(ThemeOption.Dark))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(theme).isEqualTo(ThemeOption.Dark) assertThat(theme).isEqualTo(ThemeOption.Dark)
eventSink(AdvancedSettingsEvents.SetTheme(ThemeOption.Light)) eventSink(AdvancedSettingsEvent.SetTheme(ThemeOption.Light))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(theme).isEqualTo(ThemeOption.Light) assertThat(theme).isEqualTo(ThemeOption.Light)
eventSink(AdvancedSettingsEvents.SetTheme(ThemeOption.System)) eventSink(AdvancedSettingsEvent.SetTheme(ThemeOption.System))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(theme).isEqualTo(ThemeOption.System) assertThat(theme).isEqualTo(ThemeOption.System)
@@ -242,7 +242,7 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat(liveLocationMinimumDistanceUpdate).isEqualTo(10) assertThat(liveLocationMinimumDistanceUpdate).isEqualTo(10)
eventSink(AdvancedSettingsEvents.SetLiveLocationMinimumDistanceUpdate(42)) eventSink(AdvancedSettingsEvent.SetLiveLocationMinimumDistanceUpdate(42))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(liveLocationMinimumDistanceUpdate).isEqualTo(42) assertThat(liveLocationMinimumDistanceUpdate).isEqualTo(42)
@@ -298,11 +298,11 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat(mediaPreviewConfigState.hideInviteAvatars).isFalse() assertThat(mediaPreviewConfigState.hideInviteAvatars).isFalse()
eventSink(AdvancedSettingsEvents.SetHideInviteAvatars(true)) eventSink(AdvancedSettingsEvent.SetHideInviteAvatars(true))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(mediaPreviewConfigState.hideInviteAvatars).isTrue() assertThat(mediaPreviewConfigState.hideInviteAvatars).isTrue()
eventSink(AdvancedSettingsEvents.SetHideInviteAvatars(false)) eventSink(AdvancedSettingsEvent.SetHideInviteAvatars(false))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(mediaPreviewConfigState.hideInviteAvatars).isFalse() assertThat(mediaPreviewConfigState.hideInviteAvatars).isFalse()
@@ -323,11 +323,11 @@ class AdvancedSettingsPresenterTest {
with(awaitItem()) { with(awaitItem()) {
assertThat(mediaPreviewConfigState.timelineMediaPreviewValue).isEqualTo(MediaPreviewValue.On) assertThat(mediaPreviewConfigState.timelineMediaPreviewValue).isEqualTo(MediaPreviewValue.On)
eventSink(AdvancedSettingsEvents.SetTimelineMediaPreviewValue(MediaPreviewValue.Off)) eventSink(AdvancedSettingsEvent.SetTimelineMediaPreviewValue(MediaPreviewValue.Off))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(mediaPreviewConfigState.timelineMediaPreviewValue).isEqualTo(MediaPreviewValue.Off) assertThat(mediaPreviewConfigState.timelineMediaPreviewValue).isEqualTo(MediaPreviewValue.Off)
eventSink(AdvancedSettingsEvents.SetTimelineMediaPreviewValue(MediaPreviewValue.Private)) eventSink(AdvancedSettingsEvent.SetTimelineMediaPreviewValue(MediaPreviewValue.Private))
} }
with(awaitItem()) { with(awaitItem()) {
assertThat(mediaPreviewConfigState.timelineMediaPreviewValue).isEqualTo(MediaPreviewValue.Private) assertThat(mediaPreviewConfigState.timelineMediaPreviewValue).isEqualTo(MediaPreviewValue.Private)
@@ -39,7 +39,7 @@ import org.robolectric.annotation.Config
class AdvancedSettingsViewTest : RobolectricTest() { class AdvancedSettingsViewTest : RobolectricTest() {
@Test @Test
fun `clicking on back invokes the expected callback`() = runAndroidComposeUiTest { fun `clicking on back invokes the expected callback`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>(expectEvents = false) val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>(expectEvents = false)
ensureCalledOnce { ensureCalledOnce {
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
@@ -53,7 +53,7 @@ class AdvancedSettingsViewTest : RobolectricTest() {
@Test @Test
fun `clicking on other theme emits the expected event`() = runAndroidComposeUiTest { fun `clicking on other theme emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
@@ -61,7 +61,7 @@ class AdvancedSettingsViewTest : RobolectricTest() {
) )
clickOn(CommonStrings.common_appearance) clickOn(CommonStrings.common_appearance)
clickOn(R.string.theme_dark) clickOn(R.string.theme_dark)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetTheme(ThemeOption.Dark)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetTheme(ThemeOption.Dark))
} }
@Test @Test
@@ -91,31 +91,31 @@ class AdvancedSettingsViewTest : RobolectricTest() {
@Test @Test
fun `clicking on View source emits the expected event`() = runAndroidComposeUiTest { fun `clicking on View source emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
), ),
) )
clickOn(CommonStrings.action_view_source) clickOn(CommonStrings.action_view_source)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetDeveloperModeEnabled(true)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetDeveloperModeEnabled(true))
} }
@Test @Test
fun `clicking on Share presence emits the expected event`() = runAndroidComposeUiTest { fun `clicking on Share presence emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
), ),
) )
clickOn(R.string.screen_advanced_settings_share_presence) clickOn(R.string.screen_advanced_settings_share_presence)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetSharePresenceEnabled(true)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetSharePresenceEnabled(true))
} }
@Test @Test
fun `clicking on media to enable compression emits the expected event`() = runAndroidComposeUiTest { fun `clicking on media to enable compression emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
val analyticsService = FakeAnalyticsService() val analyticsService = FakeAnalyticsService()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
@@ -124,7 +124,7 @@ class AdvancedSettingsViewTest : RobolectricTest() {
analyticsService = analyticsService analyticsService = analyticsService
) )
clickOn(R.string.screen_advanced_settings_media_compression_description) clickOn(R.string.screen_advanced_settings_media_compression_description)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetCompressMedia(true)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetCompressMedia(true))
assertThat(analyticsService.capturedEvents).isEqualTo( assertThat(analyticsService.capturedEvents).isEqualTo(
listOf( listOf(
Interaction( Interaction(
@@ -136,7 +136,7 @@ class AdvancedSettingsViewTest : RobolectricTest() {
@Test @Test
fun `clicking on media to disable compression emits the expected event`() = runAndroidComposeUiTest { fun `clicking on media to disable compression emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
val analyticsService = FakeAnalyticsService() val analyticsService = FakeAnalyticsService()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
@@ -146,7 +146,7 @@ class AdvancedSettingsViewTest : RobolectricTest() {
analyticsService = analyticsService analyticsService = analyticsService
) )
clickOn(R.string.screen_advanced_settings_media_compression_description) clickOn(R.string.screen_advanced_settings_media_compression_description)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetCompressMedia(false)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetCompressMedia(false))
assertThat(analyticsService.capturedEvents).isEqualTo( assertThat(analyticsService.capturedEvents).isEqualTo(
listOf( listOf(
Interaction( Interaction(
@@ -159,7 +159,7 @@ class AdvancedSettingsViewTest : RobolectricTest() {
@Test @Test
@Config(qualifiers = "h1080dp") @Config(qualifiers = "h1080dp")
fun `clicking on hide invite avatars emits the expected event`() = runAndroidComposeUiTest { fun `clicking on hide invite avatars emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
@@ -167,13 +167,13 @@ class AdvancedSettingsViewTest : RobolectricTest() {
), ),
) )
clickOn(R.string.screen_advanced_settings_hide_invite_avatars_toggle_title) clickOn(R.string.screen_advanced_settings_hide_invite_avatars_toggle_title)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetHideInviteAvatars(true)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetHideInviteAvatars(true))
} }
@Test @Test
@Config(qualifiers = "h1080dp") @Config(qualifiers = "h1080dp")
fun `clicking on timeline media preview always hide emits the expected event`() = runAndroidComposeUiTest { fun `clicking on timeline media preview always hide emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
@@ -181,13 +181,13 @@ class AdvancedSettingsViewTest : RobolectricTest() {
), ),
) )
clickOn(R.string.screen_advanced_settings_show_media_timeline_always_hide) clickOn(R.string.screen_advanced_settings_show_media_timeline_always_hide)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetTimelineMediaPreviewValue(MediaPreviewValue.Off)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetTimelineMediaPreviewValue(MediaPreviewValue.Off))
} }
@Test @Test
@Config(qualifiers = "h1080dp") @Config(qualifiers = "h1080dp")
fun `clicking on timeline media preview private rooms emits the expected event`() = runAndroidComposeUiTest { fun `clicking on timeline media preview private rooms emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
@@ -195,13 +195,13 @@ class AdvancedSettingsViewTest : RobolectricTest() {
), ),
) )
clickOn(R.string.screen_advanced_settings_show_media_timeline_private_rooms) clickOn(R.string.screen_advanced_settings_show_media_timeline_private_rooms)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetTimelineMediaPreviewValue(MediaPreviewValue.Private)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetTimelineMediaPreviewValue(MediaPreviewValue.Private))
} }
@Test @Test
@Config(qualifiers = "h1080dp") @Config(qualifiers = "h1080dp")
fun `clicking on timeline media preview always show emits the expected event`() = runAndroidComposeUiTest { fun `clicking on timeline media preview always show emits the expected event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>() val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>()
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
@@ -209,13 +209,13 @@ class AdvancedSettingsViewTest : RobolectricTest() {
), ),
) )
clickOn(R.string.screen_advanced_settings_show_media_timeline_always_show) clickOn(R.string.screen_advanced_settings_show_media_timeline_always_show)
eventsRecorder.assertSingle(AdvancedSettingsEvents.SetTimelineMediaPreviewValue(MediaPreviewValue.On)) eventsRecorder.assertSingle(AdvancedSettingsEvent.SetTimelineMediaPreviewValue(MediaPreviewValue.On))
} }
@Test @Test
@Config(qualifiers = "h1080dp") @Config(qualifiers = "h1080dp")
fun `hide invite avatars toggle is disabled when action is loading`() = runAndroidComposeUiTest { fun `hide invite avatars toggle is disabled when action is loading`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>(expectEvents = false) val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>(expectEvents = false)
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
@@ -230,7 +230,7 @@ class AdvancedSettingsViewTest : RobolectricTest() {
@Test @Test
@Config(qualifiers = "h1080dp") @Config(qualifiers = "h1080dp")
fun `timeline media preview options are disabled when action is loading`() = runAndroidComposeUiTest { fun `timeline media preview options are disabled when action is loading`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<AdvancedSettingsEvents>(expectEvents = false) val eventsRecorder = EventsRecorder<AdvancedSettingsEvent>(expectEvents = false)
setAdvancedSettingsView( setAdvancedSettingsView(
state = aAdvancedSettingsState( state = aAdvancedSettingsState(
eventSink = eventsRecorder, eventSink = eventsRecorder,