RageshakePreferencesEvents -> RageshakePreferencesEvent
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
@@ -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,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user