mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 20:38:40 +00:00
DeveloperSettingsEvents -> DeveloperSettingsEvent
This commit is contained in:
+7
-7
@@ -10,11 +10,11 @@ package io.element.android.features.preferences.impl.developer
|
||||
|
||||
import androidx.compose.ui.graphics.Color
|
||||
|
||||
sealed interface DeveloperSettingsEvents {
|
||||
data class SetShowColorPicker(val show: Boolean) : DeveloperSettingsEvents
|
||||
data class ChangeBrandColor(val color: Color?) : DeveloperSettingsEvents
|
||||
data object ClearCache : DeveloperSettingsEvents
|
||||
data object VacuumStores : DeveloperSettingsEvents
|
||||
data class MarkAllRoomsAsRead(val needsConfirmation: Boolean) : DeveloperSettingsEvents
|
||||
data object DismissMarkAllRoomsAsReadConfirmation : DeveloperSettingsEvents
|
||||
sealed interface DeveloperSettingsEvent {
|
||||
data class SetShowColorPicker(val show: Boolean) : DeveloperSettingsEvent
|
||||
data class ChangeBrandColor(val color: Color?) : DeveloperSettingsEvent
|
||||
data object ClearCache : DeveloperSettingsEvent
|
||||
data object VacuumStores : DeveloperSettingsEvent
|
||||
data class MarkAllRoomsAsRead(val needsConfirmation: Boolean) : DeveloperSettingsEvent
|
||||
data object DismissMarkAllRoomsAsReadConfirmation : DeveloperSettingsEvent
|
||||
}
|
||||
+7
-7
@@ -79,10 +79,10 @@ class DeveloperSettingsPresenter(
|
||||
computeCacheSize(cacheSize)
|
||||
}
|
||||
|
||||
fun handleEvent(event: DeveloperSettingsEvents) {
|
||||
fun handleEvent(event: DeveloperSettingsEvent) {
|
||||
when (event) {
|
||||
DeveloperSettingsEvents.ClearCache -> coroutineScope.clearCache(clearCacheAction)
|
||||
is DeveloperSettingsEvents.ChangeBrandColor -> coroutineScope.launch {
|
||||
DeveloperSettingsEvent.ClearCache -> coroutineScope.clearCache(clearCacheAction)
|
||||
is DeveloperSettingsEvent.ChangeBrandColor -> coroutineScope.launch {
|
||||
showColorPicker = false
|
||||
val color = event.color
|
||||
?.toArgb()
|
||||
@@ -91,13 +91,13 @@ class DeveloperSettingsPresenter(
|
||||
?.padStart(7, '#')
|
||||
enterpriseService.overrideBrandColor(sessionId, color)
|
||||
}
|
||||
is DeveloperSettingsEvents.SetShowColorPicker -> {
|
||||
is DeveloperSettingsEvent.SetShowColorPicker -> {
|
||||
showColorPicker = event.show
|
||||
}
|
||||
DeveloperSettingsEvents.VacuumStores -> coroutineScope.launch {
|
||||
DeveloperSettingsEvent.VacuumStores -> coroutineScope.launch {
|
||||
vacuumStoresUseCase()
|
||||
}
|
||||
is DeveloperSettingsEvents.MarkAllRoomsAsRead -> {
|
||||
is DeveloperSettingsEvent.MarkAllRoomsAsRead -> {
|
||||
if (event.needsConfirmation) {
|
||||
markAllRoomsAsReadAction.value = AsyncAction.ConfirmingNoParams
|
||||
} else {
|
||||
@@ -106,7 +106,7 @@ class DeveloperSettingsPresenter(
|
||||
)
|
||||
}
|
||||
}
|
||||
DeveloperSettingsEvents.DismissMarkAllRoomsAsReadConfirmation -> {
|
||||
DeveloperSettingsEvent.DismissMarkAllRoomsAsReadConfirmation -> {
|
||||
markAllRoomsAsReadAction.value = AsyncAction.Uninitialized
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ data class DeveloperSettingsState(
|
||||
val isEnterpriseBuild: Boolean,
|
||||
val showColorPicker: Boolean,
|
||||
val deviceId: DeviceId,
|
||||
val eventSink: (DeveloperSettingsEvents) -> Unit
|
||||
val eventSink: (DeveloperSettingsEvent) -> Unit
|
||||
) {
|
||||
val showLoader = clearCacheAction is AsyncAction.Loading || markAllRoomsAsReadAction is AsyncAction.Loading
|
||||
}
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ fun aDeveloperSettingsState(
|
||||
isEnterpriseBuild: Boolean = false,
|
||||
showColorPicker: Boolean = false,
|
||||
deviceId: DeviceId = DeviceId("ILAKNDNASDLK"),
|
||||
eventSink: (DeveloperSettingsEvents) -> Unit = {},
|
||||
eventSink: (DeveloperSettingsEvent) -> Unit = {},
|
||||
) = DeveloperSettingsState(
|
||||
appDeveloperSettingsState = appDeveloperSettingsState,
|
||||
cacheSize = AsyncData.Success("1.2 MB"),
|
||||
|
||||
+9
-9
@@ -56,8 +56,8 @@ fun DeveloperSettingsView(
|
||||
title = "Are you sure you want to mark all the rooms as read?",
|
||||
content = "",
|
||||
submitText = stringResource(CommonStrings.action_yes),
|
||||
onSubmitClick = { state.eventSink(DeveloperSettingsEvents.MarkAllRoomsAsRead(needsConfirmation = false)) },
|
||||
onDismiss = { state.eventSink(DeveloperSettingsEvents.DismissMarkAllRoomsAsReadConfirmation) },
|
||||
onSubmitClick = { state.eventSink(DeveloperSettingsEvent.MarkAllRoomsAsRead(needsConfirmation = false)) },
|
||||
onDismiss = { state.eventSink(DeveloperSettingsEvent.DismissMarkAllRoomsAsReadConfirmation) },
|
||||
)
|
||||
}
|
||||
BackHandler(
|
||||
@@ -89,7 +89,7 @@ fun DeveloperSettingsView(
|
||||
Text("Change brand color")
|
||||
},
|
||||
onClick = {
|
||||
state.eventSink(DeveloperSettingsEvents.SetShowColorPicker(true))
|
||||
state.eventSink(DeveloperSettingsEvent.SetShowColorPicker(true))
|
||||
}
|
||||
)
|
||||
ListItem(
|
||||
@@ -97,7 +97,7 @@ fun DeveloperSettingsView(
|
||||
Text("Reset brand color")
|
||||
},
|
||||
onClick = {
|
||||
state.eventSink(DeveloperSettingsEvents.ChangeBrandColor(null))
|
||||
state.eventSink(DeveloperSettingsEvent.ChangeBrandColor(null))
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -131,7 +131,7 @@ fun DeveloperSettingsView(
|
||||
Text("Vacuum stores")
|
||||
},
|
||||
onClick = {
|
||||
state.eventSink(DeveloperSettingsEvents.VacuumStores)
|
||||
state.eventSink(DeveloperSettingsEvent.VacuumStores)
|
||||
}
|
||||
)
|
||||
ListItem(
|
||||
@@ -152,7 +152,7 @@ fun DeveloperSettingsView(
|
||||
},
|
||||
onClick = {
|
||||
if (state.clearCacheAction.isLoading().not()) {
|
||||
state.eventSink(DeveloperSettingsEvents.ClearCache)
|
||||
state.eventSink(DeveloperSettingsEvent.ClearCache)
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -164,10 +164,10 @@ fun DeveloperSettingsView(
|
||||
showAlphaBar = false,
|
||||
),
|
||||
onDismissRequest = {
|
||||
state.eventSink(DeveloperSettingsEvents.SetShowColorPicker(false))
|
||||
state.eventSink(DeveloperSettingsEvent.SetShowColorPicker(false))
|
||||
},
|
||||
onPickedColor = {
|
||||
state.eventSink(DeveloperSettingsEvents.ChangeBrandColor(it))
|
||||
state.eventSink(DeveloperSettingsEvent.ChangeBrandColor(it))
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -210,7 +210,7 @@ private fun MarkAllRoomsAsReadCategory(state: DeveloperSettingsState) {
|
||||
},
|
||||
enabled = !state.showLoader,
|
||||
onClick = {
|
||||
state.eventSink(DeveloperSettingsEvents.MarkAllRoomsAsRead(needsConfirmation = true))
|
||||
state.eventSink(DeveloperSettingsEvent.MarkAllRoomsAsRead(needsConfirmation = true))
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
+8
-8
@@ -88,7 +88,7 @@ class DeveloperSettingsPresenterTest {
|
||||
skipItems(2)
|
||||
assertThat(clearCacheUseCase.executeHasBeenCalled).isFalse()
|
||||
awaitItem().also { state ->
|
||||
state.eventSink(DeveloperSettingsEvents.ClearCache)
|
||||
state.eventSink(DeveloperSettingsEvent.ClearCache)
|
||||
}
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.clearCacheAction).isInstanceOf(AsyncAction.Loading::class.java)
|
||||
@@ -117,13 +117,13 @@ class DeveloperSettingsPresenterTest {
|
||||
skipItems(1)
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.isEnterpriseBuild).isTrue()
|
||||
initialState.eventSink(DeveloperSettingsEvents.SetShowColorPicker(true))
|
||||
initialState.eventSink(DeveloperSettingsEvent.SetShowColorPicker(true))
|
||||
assertThat(awaitItem().showColorPicker).isTrue()
|
||||
initialState.eventSink(DeveloperSettingsEvents.SetShowColorPicker(false))
|
||||
initialState.eventSink(DeveloperSettingsEvent.SetShowColorPicker(false))
|
||||
assertThat(awaitItem().showColorPicker).isFalse()
|
||||
initialState.eventSink(DeveloperSettingsEvents.SetShowColorPicker(true))
|
||||
initialState.eventSink(DeveloperSettingsEvent.SetShowColorPicker(true))
|
||||
assertThat(awaitItem().showColorPicker).isTrue()
|
||||
initialState.eventSink(DeveloperSettingsEvents.ChangeBrandColor(Color.Green))
|
||||
initialState.eventSink(DeveloperSettingsEvent.ChangeBrandColor(Color.Green))
|
||||
assertThat(awaitItem().showColorPicker).isFalse()
|
||||
skipItems(1)
|
||||
overrideBrandColorResult.assertions().isCalledOnce()
|
||||
@@ -138,10 +138,10 @@ class DeveloperSettingsPresenterTest {
|
||||
presenter.test {
|
||||
skipItems(2)
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(DeveloperSettingsEvents.MarkAllRoomsAsRead(needsConfirmation = true))
|
||||
initialState.eventSink(DeveloperSettingsEvent.MarkAllRoomsAsRead(needsConfirmation = true))
|
||||
val stateWithConfirmation = awaitItem()
|
||||
assertThat(stateWithConfirmation.markAllRoomsAsReadAction.isConfirming()).isTrue()
|
||||
stateWithConfirmation.eventSink(DeveloperSettingsEvents.MarkAllRoomsAsRead(needsConfirmation = false))
|
||||
stateWithConfirmation.eventSink(DeveloperSettingsEvent.MarkAllRoomsAsRead(needsConfirmation = false))
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.markAllRoomsAsReadAction.isConfirming()).isFalse()
|
||||
assertThat(state.markAllRoomsAsReadAction).isInstanceOf(AsyncAction.Loading::class.java)
|
||||
@@ -164,7 +164,7 @@ class DeveloperSettingsPresenterTest {
|
||||
presenter.test {
|
||||
val state = awaitItem()
|
||||
assertThat(vacuumCalled).isFalse()
|
||||
state.eventSink(DeveloperSettingsEvents.VacuumStores)
|
||||
state.eventSink(DeveloperSettingsEvent.VacuumStores)
|
||||
skipItems(1)
|
||||
assertThat(vacuumCalled).isTrue()
|
||||
}
|
||||
|
||||
+5
-5
@@ -30,7 +30,7 @@ import org.robolectric.annotation.Config
|
||||
class DeveloperSettingsViewTest : RobolectricTest() {
|
||||
@Test
|
||||
fun `clicking on back invokes the expected callback`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<DeveloperSettingsEvents>(expectEvents = false)
|
||||
val eventsRecorder = EventsRecorder<DeveloperSettingsEvent>(expectEvents = false)
|
||||
ensureCalledOnce {
|
||||
setDeveloperSettingsView(
|
||||
state = aDeveloperSettingsState(
|
||||
@@ -45,7 +45,7 @@ class DeveloperSettingsViewTest : RobolectricTest() {
|
||||
@Config(qualifiers = "h2400dp")
|
||||
@Test
|
||||
fun `clicking on push history notification invokes the expected callback`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<DeveloperSettingsEvents>(expectEvents = false)
|
||||
val eventsRecorder = EventsRecorder<DeveloperSettingsEvent>(expectEvents = false)
|
||||
ensureCalledOnce {
|
||||
setDeveloperSettingsView(
|
||||
state = aDeveloperSettingsState(
|
||||
@@ -60,7 +60,7 @@ class DeveloperSettingsViewTest : RobolectricTest() {
|
||||
@Config(qualifiers = "h2000dp")
|
||||
@Test
|
||||
fun `clicking on open showkase invokes the expected callback`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<DeveloperSettingsEvents>(expectEvents = false)
|
||||
val eventsRecorder = EventsRecorder<DeveloperSettingsEvent>(expectEvents = false)
|
||||
ensureCalledOnce {
|
||||
setDeveloperSettingsView(
|
||||
state = aDeveloperSettingsState(
|
||||
@@ -75,14 +75,14 @@ class DeveloperSettingsViewTest : RobolectricTest() {
|
||||
@Config(qualifiers = "h2400dp")
|
||||
@Test
|
||||
fun `clicking on clear cache emits the expected event`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<DeveloperSettingsEvents>()
|
||||
val eventsRecorder = EventsRecorder<DeveloperSettingsEvent>()
|
||||
setDeveloperSettingsView(
|
||||
state = aDeveloperSettingsState(
|
||||
eventSink = eventsRecorder
|
||||
),
|
||||
)
|
||||
onNodeWithText("Clear cache").performScrollTo().performClick()
|
||||
eventsRecorder.assertSingle(DeveloperSettingsEvents.ClearCache)
|
||||
eventsRecorder.assertSingle(DeveloperSettingsEvent.ClearCache)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user