CrashDetectionEvents -> CrashDetectionEvent
This commit is contained in:
@@ -15,7 +15,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import io.element.android.features.rageshake.api.crash.CrashDetectionEvents
|
import io.element.android.features.rageshake.api.crash.CrashDetectionEvent
|
||||||
import io.element.android.features.rageshake.api.crash.CrashDetectionView
|
import io.element.android.features.rageshake.api.crash.CrashDetectionView
|
||||||
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.RageshakeDetectionView
|
import io.element.android.features.rageshake.api.detection.RageshakeDetectionView
|
||||||
@@ -39,7 +39,7 @@ fun RootView(
|
|||||||
children()
|
children()
|
||||||
|
|
||||||
fun onOpenBugReport() {
|
fun onOpenBugReport() {
|
||||||
state.crashDetectionState.eventSink(CrashDetectionEvents.ResetAppHasCrashed)
|
state.crashDetectionState.eventSink(CrashDetectionEvent.ResetAppHasCrashed)
|
||||||
state.rageshakeDetectionState.eventSink(RageshakeDetectionEvent.Dismiss)
|
state.rageshakeDetectionState.eventSink(RageshakeDetectionEvent.Dismiss)
|
||||||
onOpenBugReport.invoke()
|
onOpenBugReport.invoke()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
package io.element.android.features.rageshake.api.crash
|
package io.element.android.features.rageshake.api.crash
|
||||||
|
|
||||||
sealed interface CrashDetectionEvents {
|
sealed interface CrashDetectionEvent {
|
||||||
data object ResetAllCrashData : CrashDetectionEvents
|
data object ResetAllCrashData : CrashDetectionEvent
|
||||||
data object ResetAppHasCrashed : CrashDetectionEvents
|
data object ResetAppHasCrashed : CrashDetectionEvent
|
||||||
}
|
}
|
||||||
@@ -11,5 +11,5 @@ package io.element.android.features.rageshake.api.crash
|
|||||||
data class CrashDetectionState(
|
data class CrashDetectionState(
|
||||||
val appName: String,
|
val appName: String,
|
||||||
val crashDetected: Boolean,
|
val crashDetected: Boolean,
|
||||||
val eventSink: (CrashDetectionEvents) -> Unit
|
val eventSink: (CrashDetectionEvent) -> Unit
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ fun CrashDetectionView(
|
|||||||
onOpenBugReport: () -> Unit = { },
|
onOpenBugReport: () -> Unit = { },
|
||||||
) {
|
) {
|
||||||
fun onPopupDismissed() {
|
fun onPopupDismissed() {
|
||||||
state.eventSink(CrashDetectionEvents.ResetAllCrashData)
|
state.eventSink(CrashDetectionEvent.ResetAllCrashData)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.crashDetected) {
|
if (state.crashDetected) {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import androidx.compose.runtime.rememberCoroutineScope
|
|||||||
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.crash.CrashDetectionEvents
|
import io.element.android.features.rageshake.api.crash.CrashDetectionEvent
|
||||||
import io.element.android.features.rageshake.api.crash.CrashDetectionPresenter
|
import io.element.android.features.rageshake.api.crash.CrashDetectionPresenter
|
||||||
import io.element.android.features.rageshake.api.crash.CrashDetectionState
|
import io.element.android.features.rageshake.api.crash.CrashDetectionState
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
@@ -48,10 +48,10 @@ class DefaultCrashDetectionPresenter(
|
|||||||
}
|
}
|
||||||
}.collectAsState(false)
|
}.collectAsState(false)
|
||||||
|
|
||||||
fun handleEvent(event: CrashDetectionEvents) {
|
fun handleEvent(event: CrashDetectionEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
CrashDetectionEvents.ResetAllCrashData -> localCoroutineScope.resetAll()
|
CrashDetectionEvent.ResetAllCrashData -> localCoroutineScope.resetAll()
|
||||||
CrashDetectionEvents.ResetAppHasCrashed -> localCoroutineScope.resetAppHasCrashed()
|
CrashDetectionEvent.ResetAppHasCrashed -> localCoroutineScope.resetAppHasCrashed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.crash.CrashDetectionEvents
|
import io.element.android.features.rageshake.api.crash.CrashDetectionEvent
|
||||||
import io.element.android.features.rageshake.impl.crash.A_CRASH_DATA
|
import io.element.android.features.rageshake.impl.crash.A_CRASH_DATA
|
||||||
import io.element.android.features.rageshake.impl.crash.DefaultCrashDetectionPresenter
|
import io.element.android.features.rageshake.impl.crash.DefaultCrashDetectionPresenter
|
||||||
import io.element.android.features.rageshake.impl.crash.FakeCrashDataStore
|
import io.element.android.features.rageshake.impl.crash.FakeCrashDataStore
|
||||||
@@ -80,7 +80,7 @@ class CrashDetectionPresenterTest {
|
|||||||
skipItems(1)
|
skipItems(1)
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.crashDetected).isTrue()
|
assertThat(initialState.crashDetected).isTrue()
|
||||||
initialState.eventSink.invoke(CrashDetectionEvents.ResetAppHasCrashed)
|
initialState.eventSink.invoke(CrashDetectionEvent.ResetAppHasCrashed)
|
||||||
assertThat(awaitItem().crashDetected).isFalse()
|
assertThat(awaitItem().crashDetected).isFalse()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,7 +96,7 @@ class CrashDetectionPresenterTest {
|
|||||||
skipItems(1)
|
skipItems(1)
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.crashDetected).isTrue()
|
assertThat(initialState.crashDetected).isTrue()
|
||||||
initialState.eventSink.invoke(CrashDetectionEvents.ResetAllCrashData)
|
initialState.eventSink.invoke(CrashDetectionEvent.ResetAllCrashData)
|
||||||
assertThat(awaitItem().crashDetected).isFalse()
|
assertThat(awaitItem().crashDetected).isFalse()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user