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