Create RootStatePreviewParameter

This commit is contained in:
Benoit Marty 2023-02-10 16:32:36 +01:00 committed by Benoit Marty
parent 395d432220
commit 2a04cd3983

View file

@ -26,6 +26,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.rageshake.crash.ui.CrashDetectionEvents import io.element.android.features.rageshake.crash.ui.CrashDetectionEvents
import io.element.android.features.rageshake.crash.ui.CrashDetectionView import io.element.android.features.rageshake.crash.ui.CrashDetectionView
import io.element.android.features.rageshake.crash.ui.aCrashDetectionState import io.element.android.features.rageshake.crash.ui.aCrashDetectionState
@ -35,7 +36,6 @@ import io.element.android.features.rageshake.detection.aRageshakeDetectionState
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.BooleanPreviewParameter
import io.element.android.tests.uitests.openShowkase import io.element.android.tests.uitests.openShowkase
import io.element.android.x.component.ShowkaseButton import io.element.android.x.component.ShowkaseButton
@ -77,23 +77,33 @@ fun RootView(
} }
} }
@Preview open class RootStatePreviewParameter : PreviewParameterProvider<RootState> {
@Composable override val values: Sequence<RootState>
fun RootLightPreview(@PreviewParameter(BooleanPreviewParameter::class) dialogType: Boolean) = ElementPreviewLight { ContentToPreview(dialogType) } get() = sequenceOf(
aRootState().copy(
@Preview isShowkaseButtonVisible = true,
@Composable rageshakeDetectionState = aRageshakeDetectionState().copy(showDialog = false),
fun RootDarkPreview(@PreviewParameter(BooleanPreviewParameter::class) dialogType: Boolean) = ElementPreviewDark { ContentToPreview(dialogType) } crashDetectionState = aCrashDetectionState().copy(crashDetected = true),
),
@Composable aRootState().copy(
private fun ContentToPreview(dialogType: Boolean) { isShowkaseButtonVisible = true,
RootView( rageshakeDetectionState = aRageshakeDetectionState().copy(showDialog = true),
aRootState().copy( crashDetectionState = aCrashDetectionState().copy(crashDetected = false),
isShowkaseButtonVisible = true, )
rageshakeDetectionState = aRageshakeDetectionState().copy(showDialog = dialogType),
crashDetectionState = aCrashDetectionState().copy(crashDetected = !dialogType),
) )
) { }
@Preview
@Composable
fun RootLightPreview(@PreviewParameter(RootStatePreviewParameter::class) rootState: RootState) = ElementPreviewLight { ContentToPreview(rootState) }
@Preview
@Composable
fun RootDarkPreview(@PreviewParameter(RootStatePreviewParameter::class) rootState: RootState) = ElementPreviewDark { ContentToPreview(rootState) }
@Composable
private fun ContentToPreview(rootState: RootState) {
RootView(rootState) {
Text("Children") Text("Children")
} }
} }