RageshakePreferencesEvents -> RageshakePreferencesEvent

This commit is contained in:
Benoit Marty
2026-01-19 18:18:44 +01:00
parent dca227d3d7
commit d207efd169
7 changed files with 17 additions and 17 deletions

View File

@@ -8,7 +8,7 @@
package io.element.android.features.rageshake.api.preferences package io.element.android.features.rageshake.api.preferences
sealed interface RageshakePreferencesEvents { sealed interface RageshakePreferencesEvent {
data class SetSensitivity(val sensitivity: Float) : RageshakePreferencesEvents data class SetSensitivity(val sensitivity: Float) : RageshakePreferencesEvent
data class SetIsEnabled(val isEnabled: Boolean) : RageshakePreferencesEvents data class SetIsEnabled(val isEnabled: Boolean) : RageshakePreferencesEvent
} }

View File

@@ -13,5 +13,5 @@ data class RageshakePreferencesState(
val isEnabled: Boolean, val isEnabled: Boolean,
val isSupported: Boolean, val isSupported: Boolean,
val sensitivity: Float, val sensitivity: Float,
val eventSink: (RageshakePreferencesEvents) -> Unit, val eventSink: (RageshakePreferencesEvent) -> Unit,
) )

View File

@@ -23,7 +23,7 @@ fun aRageshakePreferencesState(
isEnabled: Boolean = false, isEnabled: Boolean = false,
isSupported: Boolean = true, isSupported: Boolean = true,
sensitivity: Float = 0.3f, sensitivity: Float = 0.3f,
eventSink: (RageshakePreferencesEvents) -> Unit = {} eventSink: (RageshakePreferencesEvent) -> Unit = {}
) = RageshakePreferencesState( ) = RageshakePreferencesState(
isFeatureEnabled = isFeatureEnabled, isFeatureEnabled = isFeatureEnabled,
isEnabled = isEnabled, isEnabled = isEnabled,

View File

@@ -29,11 +29,11 @@ fun RageshakePreferencesView(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
fun onSensitivityChanged(sensitivity: Float) { fun onSensitivityChanged(sensitivity: Float) {
state.eventSink(RageshakePreferencesEvents.SetSensitivity(sensitivity = sensitivity)) state.eventSink(RageshakePreferencesEvent.SetSensitivity(sensitivity = sensitivity))
} }
fun onEnabledChanged(isEnabled: Boolean) { fun onEnabledChanged(isEnabled: Boolean) {
state.eventSink(RageshakePreferencesEvents.SetIsEnabled(isEnabled = isEnabled)) state.eventSink(RageshakePreferencesEvent.SetIsEnabled(isEnabled = isEnabled))
} }
Column(modifier = modifier) { Column(modifier = modifier) {

View File

@@ -19,7 +19,7 @@ import dev.zacsweers.metro.ContributesBinding
import io.element.android.features.rageshake.api.detection.RageshakeDetectionEvent import io.element.android.features.rageshake.api.detection.RageshakeDetectionEvent
import io.element.android.features.rageshake.api.detection.RageshakeDetectionPresenter import io.element.android.features.rageshake.api.detection.RageshakeDetectionPresenter
import io.element.android.features.rageshake.api.detection.RageshakeDetectionState import io.element.android.features.rageshake.api.detection.RageshakeDetectionState
import io.element.android.features.rageshake.api.preferences.RageshakePreferencesEvents import io.element.android.features.rageshake.api.preferences.RageshakePreferencesEvent
import io.element.android.features.rageshake.api.preferences.RageshakePreferencesPresenter import io.element.android.features.rageshake.api.preferences.RageshakePreferencesPresenter
import io.element.android.features.rageshake.api.screenshot.ImageResult import io.element.android.features.rageshake.api.screenshot.ImageResult
import io.element.android.features.rageshake.impl.rageshake.RageShake import io.element.android.features.rageshake.impl.rageshake.RageShake
@@ -51,7 +51,7 @@ class DefaultRageshakeDetectionPresenter(
fun handleEvent(event: RageshakeDetectionEvent) { fun handleEvent(event: RageshakeDetectionEvent) {
when (event) { when (event) {
RageshakeDetectionEvent.Disable -> { RageshakeDetectionEvent.Disable -> {
preferencesState.eventSink(RageshakePreferencesEvents.SetIsEnabled(false)) preferencesState.eventSink(RageshakePreferencesEvent.SetIsEnabled(false))
showDialog.value = false showDialog.value = false
} }
RageshakeDetectionEvent.StartDetection -> isStarted.value = true RageshakeDetectionEvent.StartDetection -> isStarted.value = true

View File

@@ -19,7 +19,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.ContributesBinding
import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.features.rageshake.api.RageshakeFeatureAvailability
import io.element.android.features.rageshake.api.preferences.RageshakePreferencesEvents import io.element.android.features.rageshake.api.preferences.RageshakePreferencesEvent
import io.element.android.features.rageshake.api.preferences.RageshakePreferencesPresenter import io.element.android.features.rageshake.api.preferences.RageshakePreferencesPresenter
import io.element.android.features.rageshake.api.preferences.RageshakePreferencesState import io.element.android.features.rageshake.api.preferences.RageshakePreferencesState
import io.element.android.features.rageshake.impl.rageshake.RageShake import io.element.android.features.rageshake.impl.rageshake.RageShake
@@ -48,10 +48,10 @@ class DefaultRageshakePreferencesPresenter(
rageshakeDataStore.sensitivity() rageshakeDataStore.sensitivity()
}.collectAsState(initial = 0f) }.collectAsState(initial = 0f)
fun handleEvent(event: RageshakePreferencesEvents) { fun handleEvent(event: RageshakePreferencesEvent) {
when (event) { when (event) {
is RageshakePreferencesEvents.SetIsEnabled -> localCoroutineScope.setIsEnabled(event.isEnabled) is RageshakePreferencesEvent.SetIsEnabled -> localCoroutineScope.setIsEnabled(event.isEnabled)
is RageshakePreferencesEvents.SetSensitivity -> localCoroutineScope.setSensitivity(event.sensitivity) is RageshakePreferencesEvent.SetSensitivity -> localCoroutineScope.setSensitivity(event.sensitivity)
} }
} }

View File

@@ -12,7 +12,7 @@ import app.cash.molecule.RecompositionMode
import app.cash.molecule.moleculeFlow import app.cash.molecule.moleculeFlow
import app.cash.turbine.test import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import io.element.android.features.rageshake.api.preferences.RageshakePreferencesEvents import io.element.android.features.rageshake.api.preferences.RageshakePreferencesEvent
import io.element.android.features.rageshake.impl.rageshake.A_SENSITIVITY import io.element.android.features.rageshake.impl.rageshake.A_SENSITIVITY
import io.element.android.features.rageshake.impl.rageshake.FakeRageShake import io.element.android.features.rageshake.impl.rageshake.FakeRageShake
import io.element.android.features.rageshake.impl.rageshake.FakeRageshakeDataStore import io.element.android.features.rageshake.impl.rageshake.FakeRageshakeDataStore
@@ -73,9 +73,9 @@ class RageshakePreferencesPresenterTest {
skipItems(1) skipItems(1)
val initialState = awaitItem() val initialState = awaitItem()
assertThat(initialState.isEnabled).isTrue() assertThat(initialState.isEnabled).isTrue()
initialState.eventSink.invoke(RageshakePreferencesEvents.SetIsEnabled(false)) initialState.eventSink.invoke(RageshakePreferencesEvent.SetIsEnabled(false))
assertThat(awaitItem().isEnabled).isFalse() assertThat(awaitItem().isEnabled).isFalse()
initialState.eventSink.invoke(RageshakePreferencesEvents.SetIsEnabled(true)) initialState.eventSink.invoke(RageshakePreferencesEvent.SetIsEnabled(true))
assertThat(awaitItem().isEnabled).isTrue() assertThat(awaitItem().isEnabled).isTrue()
} }
} }
@@ -93,7 +93,7 @@ class RageshakePreferencesPresenterTest {
skipItems(1) skipItems(1)
val initialState = awaitItem() val initialState = awaitItem()
assertThat(initialState.sensitivity).isEqualTo(A_SENSITIVITY) assertThat(initialState.sensitivity).isEqualTo(A_SENSITIVITY)
initialState.eventSink.invoke(RageshakePreferencesEvents.SetSensitivity(A_SENSITIVITY + 1f)) initialState.eventSink.invoke(RageshakePreferencesEvent.SetSensitivity(A_SENSITIVITY + 1f))
assertThat(awaitItem().sensitivity).isEqualTo(A_SENSITIVITY + 1f) assertThat(awaitItem().sensitivity).isEqualTo(A_SENSITIVITY + 1f)
} }
} }