Enforce no default value in state.

This commit is contained in:
Benoit Marty 2023-02-10 15:22:16 +01:00 committed by Benoit Marty
parent 2a0f636250
commit 23c4b9041a
17 changed files with 97 additions and 44 deletions

View file

@ -21,12 +21,12 @@ import io.element.android.libraries.architecture.Async
import kotlinx.parcelize.Parcelize
data class BugReportState(
val formState: BugReportFormState = BugReportFormState.Default,
val hasCrashLogs: Boolean = false,
val screenshotUri: String? = null,
val sendingProgress: Float = 0F,
val sending: Async<Unit> = Async.Uninitialized,
val eventSink: (BugReportEvents) -> Unit = {}
val formState: BugReportFormState,
val hasCrashLogs: Boolean,
val screenshotUri: String?,
val sendingProgress: Float,
val sending: Async<Unit>,
val eventSink: (BugReportEvents) -> Unit
) {
val submitEnabled =
formState.description.length > 10 && sending !is Async.Loading
@ -50,3 +50,12 @@ data class BugReportFormState(
)
}
}
fun aBugReportState() = BugReportState(
formState = BugReportFormState.Default,
hasCrashLogs = false,
screenshotUri = null,
sendingProgress = 0F,
sending = Async.Uninitialized,
eventSink = {}
)

View file

@ -218,6 +218,6 @@ fun BugReportViewDarkPreview() = ElementPreviewDark { ContentToPreview() }
@Composable
private fun ContentToPreview() {
BugReportView(
state = BugReportState(),
state = aBugReportState(),
)
}

View file

@ -78,6 +78,6 @@ fun CrashDetectionContentDarkPreview() = ElementPreviewDark { ContentToPreview()
@Composable
private fun ContentToPreview() {
CrashDetectionContent(
state = CrashDetectionState()
state = aCrashDetectionState()
)
}

View file

@ -17,6 +17,11 @@
package io.element.android.features.rageshake.crash.ui
data class CrashDetectionState(
val crashDetected: Boolean = false,
val eventSink: (CrashDetectionEvents) -> Unit = {}
val crashDetected: Boolean,
val eventSink: (CrashDetectionEvents) -> Unit
)
fun aCrashDetectionState() = CrashDetectionState(
crashDetected = false,
eventSink = {}
)

View file

@ -18,12 +18,21 @@ package io.element.android.features.rageshake.detection
import androidx.compose.runtime.Stable
import io.element.android.features.rageshake.preferences.RageshakePreferencesState
import io.element.android.features.rageshake.preferences.aRageshakePreferencesState
@Stable
data class RageshakeDetectionState(
val takeScreenshot: Boolean = false,
val showDialog: Boolean = false,
val isStarted: Boolean = false,
val preferenceState: RageshakePreferencesState = RageshakePreferencesState(),
val eventSink: (RageshakeDetectionEvents) -> Unit = {}
val takeScreenshot: Boolean,
val showDialog: Boolean,
val isStarted: Boolean,
val preferenceState: RageshakePreferencesState,
val eventSink: (RageshakeDetectionEvents) -> Unit
)
fun aRageshakeDetectionState() = RageshakeDetectionState(
takeScreenshot = false,
showDialog = false,
isStarted = false,
preferenceState = aRageshakePreferencesState(),
eventSink = {}
)

View file

@ -17,8 +17,15 @@
package io.element.android.features.rageshake.preferences
data class RageshakePreferencesState(
val isEnabled: Boolean = false,
val isSupported: Boolean = true,
val sensitivity: Float = 0.3f,
val eventSink: (RageshakePreferencesEvents) -> Unit = {},
val isEnabled: Boolean,
val isSupported: Boolean,
val sensitivity: Float,
val eventSink: (RageshakePreferencesEvents) -> Unit,
)
fun aRageshakePreferencesState() = RageshakePreferencesState(
isEnabled = false,
isSupported = true,
sensitivity = 0.3f,
eventSink = {}
)

View file

@ -85,7 +85,7 @@ fun RageshakePreferencesViewDarkPreview() = ElementPreviewDark { ContentToPrevie
@Composable
private fun ContentToPreview() {
RageshakePreferencesView(RageshakePreferencesState(isEnabled = true, isSupported = true, sensitivity = 0.5f))
RageshakePreferencesView(aRageshakePreferencesState().copy(isEnabled = true, isSupported = true, sensitivity = 0.5f))
}
@Preview
@ -98,5 +98,5 @@ fun RageshakePreferencesViewNotSupportedDarkPreview() = ElementPreviewDark { Con
@Composable
private fun ContentNotSupportedToPreview() {
RageshakePreferencesView(RageshakePreferencesState(isEnabled = true, isSupported = false, sensitivity = 0.5f))
RageshakePreferencesView(aRageshakePreferencesState().copy(isEnabled = true, isSupported = false, sensitivity = 0.5f))
}