PreviewParameterProvider FTW
This commit is contained in:
parent
2a04cd3983
commit
e1b9d1da02
6 changed files with 73 additions and 96 deletions
|
|
@ -77,7 +77,7 @@ fun RootView(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class RootStatePreviewParameter : PreviewParameterProvider<RootState> {
|
open class RootStatePreviewParameterProvider : PreviewParameterProvider<RootState> {
|
||||||
override val values: Sequence<RootState>
|
override val values: Sequence<RootState>
|
||||||
get() = sequenceOf(
|
get() = sequenceOf(
|
||||||
aRootState().copy(
|
aRootState().copy(
|
||||||
|
|
@ -95,11 +95,11 @@ open class RootStatePreviewParameter : PreviewParameterProvider<RootState> {
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun RootLightPreview(@PreviewParameter(RootStatePreviewParameter::class) rootState: RootState) = ElementPreviewLight { ContentToPreview(rootState) }
|
fun RootLightPreview(@PreviewParameter(RootStatePreviewParameterProvider::class) rootState: RootState) = ElementPreviewLight { ContentToPreview(rootState) }
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun RootDarkPreview(@PreviewParameter(RootStatePreviewParameter::class) rootState: RootState) = ElementPreviewDark { ContentToPreview(rootState) }
|
fun RootDarkPreview(@PreviewParameter(RootStatePreviewParameterProvider::class) rootState: RootState) = ElementPreviewDark { ContentToPreview(rootState) }
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ContentToPreview(rootState: RootState) {
|
private fun ContentToPreview(rootState: RootState) {
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import androidx.compose.runtime.snapshotFlow
|
import androidx.compose.runtime.snapshotFlow
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
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.PreviewParameterProvider
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import io.element.android.features.messages.actionlist.model.TimelineItemAction
|
import io.element.android.features.messages.actionlist.model.TimelineItemAction
|
||||||
import io.element.android.features.messages.timeline.createMessageEvent
|
import io.element.android.features.messages.timeline.createMessageEvent
|
||||||
|
|
@ -134,56 +136,37 @@ private fun SheetContent(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview
|
open class ActionListStatePreviewParameterProvider : PreviewParameterProvider<ActionListState> {
|
||||||
@Composable
|
override val values: Sequence<ActionListState>
|
||||||
fun SheetContentNoneLightPreview() = ElementPreviewLight { ContentNoneToPreview() }
|
get() = sequenceOf(
|
||||||
|
anActionListState(),
|
||||||
@Preview
|
anActionListState().copy(target = ActionListState.Target.Loading(createMessageEvent())),
|
||||||
@Composable
|
anActionListState().copy(
|
||||||
fun SheetContentNoneDarkPreview() = ElementPreviewDark { ContentNoneToPreview() }
|
target = ActionListState.Target.Success(
|
||||||
|
messageEvent = createMessageEvent(),
|
||||||
@Composable
|
actions = persistentListOf(
|
||||||
private fun ContentNoneToPreview() {
|
TimelineItemAction.Reply,
|
||||||
SheetContent(anActionListState())
|
TimelineItemAction.Forward,
|
||||||
}
|
TimelineItemAction.Copy,
|
||||||
|
TimelineItemAction.Edit,
|
||||||
@Preview
|
TimelineItemAction.Redact,
|
||||||
@Composable
|
)
|
||||||
fun SheetContentLoadingLightPreview() = ElementPreviewLight { ContentLoadingToPreview() }
|
|
||||||
|
|
||||||
@Preview
|
|
||||||
@Composable
|
|
||||||
fun SheetContentLoadingDarkPreview() = ElementPreviewDark { ContentLoadingToPreview() }
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun ContentLoadingToPreview() {
|
|
||||||
SheetContent(
|
|
||||||
anActionListState().copy(target = ActionListState.Target.Loading(createMessageEvent()))
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Preview
|
|
||||||
@Composable
|
|
||||||
fun SheetContentSuccessLightPreview() = ElementPreviewLight { ContentSuccessToPreview() }
|
|
||||||
|
|
||||||
@Preview
|
|
||||||
@Composable
|
|
||||||
fun SheetContentSuccessDarkPreview() = ElementPreviewDark { ContentSuccessToPreview() }
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun ContentSuccessToPreview() {
|
|
||||||
SheetContent(
|
|
||||||
anActionListState().copy(
|
|
||||||
target = ActionListState.Target.Success(
|
|
||||||
messageEvent = createMessageEvent(),
|
|
||||||
actions = persistentListOf(
|
|
||||||
TimelineItemAction.Reply,
|
|
||||||
TimelineItemAction.Forward,
|
|
||||||
TimelineItemAction.Copy,
|
|
||||||
TimelineItemAction.Edit,
|
|
||||||
TimelineItemAction.Redact,
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
}
|
||||||
|
|
||||||
|
@Preview
|
||||||
|
@Composable
|
||||||
|
fun SheetContentLightPreview(@PreviewParameter(ActionListStatePreviewParameterProvider::class) state: ActionListState) =
|
||||||
|
ElementPreviewLight { ContentToPreview(state) }
|
||||||
|
|
||||||
|
@Preview
|
||||||
|
@Composable
|
||||||
|
fun SheetContentDarkPreview(@PreviewParameter(ActionListStatePreviewParameterProvider::class) state: ActionListState) =
|
||||||
|
ElementPreviewDark { ContentToPreview(state) }
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun ContentToPreview(state: ActionListState) {
|
||||||
|
SheetContent(state)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
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.PreviewParameterProvider
|
||||||
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
|
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
|
||||||
import io.element.android.libraries.designsystem.components.preferences.PreferenceSlide
|
import io.element.android.libraries.designsystem.components.preferences.PreferenceSlide
|
||||||
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
|
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
|
||||||
|
|
@ -75,28 +77,25 @@ fun RageshakePreferencesView(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview
|
open class RageshakePreferencesStatePreviewParameterProvider : PreviewParameterProvider<RageshakePreferencesState> {
|
||||||
@Composable
|
override val values: Sequence<RageshakePreferencesState>
|
||||||
fun RageshakePreferencesViewLightPreview() = ElementPreviewLight { ContentToPreview() }
|
get() = sequenceOf(
|
||||||
|
aRageshakePreferencesState().copy(isEnabled = true, isSupported = true, sensitivity = 0.5f),
|
||||||
@Preview
|
aRageshakePreferencesState().copy(isEnabled = true, isSupported = false, sensitivity = 0.5f),
|
||||||
@Composable
|
)
|
||||||
fun RageshakePreferencesViewDarkPreview() = ElementPreviewDark { ContentToPreview() }
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun ContentToPreview() {
|
|
||||||
RageshakePreferencesView(aRageshakePreferencesState().copy(isEnabled = true, isSupported = true, sensitivity = 0.5f))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun RageshakePreferencesViewNotSupportedLightPreview() = ElementPreviewLight { ContentNotSupportedToPreview() }
|
fun RageshakePreferencesViewLightPreview(@PreviewParameter(RageshakePreferencesStatePreviewParameterProvider::class) state: RageshakePreferencesState) =
|
||||||
|
ElementPreviewLight { ContentToPreview(state) }
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun RageshakePreferencesViewNotSupportedDarkPreview() = ElementPreviewDark { ContentNotSupportedToPreview() }
|
fun RageshakePreferencesViewDarkPreview(@PreviewParameter(RageshakePreferencesStatePreviewParameterProvider::class) state: RageshakePreferencesState) =
|
||||||
|
ElementPreviewDark { ContentToPreview(state) }
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ContentNotSupportedToPreview() {
|
private fun ContentToPreview(state: RageshakePreferencesState) {
|
||||||
RageshakePreferencesView(aRageshakePreferencesState().copy(isEnabled = true, isSupported = false, sensitivity = 0.5f))
|
RageshakePreferencesView(state)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ package io.element.android.libraries.designsystem.utils
|
||||||
|
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
|
|
||||||
open class BooleanPreviewParameter : PreviewParameterProvider<Boolean> {
|
open class BooleanPreviewParameterProvider : PreviewParameterProvider<Boolean> {
|
||||||
override val values: Sequence<Boolean>
|
override val values: Sequence<Boolean>
|
||||||
get() = sequenceOf(false, true)
|
get() = sequenceOf(false, true)
|
||||||
}
|
}
|
||||||
|
|
@ -18,7 +18,7 @@ package io.element.android.libraries.designsystem.utils
|
||||||
|
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
|
|
||||||
open class PairCombinedPreviewParameter<T1, T2>(
|
open class PairCombinedPreviewParameterProvider<T1, T2>(
|
||||||
private val provider: Pair<PreviewParameterProvider<T1>, PreviewParameterProvider<T2>>
|
private val provider: Pair<PreviewParameterProvider<T1>, PreviewParameterProvider<T2>>
|
||||||
) : PreviewParameterProvider<Pair<T1, T2>> {
|
) : PreviewParameterProvider<Pair<T1, T2>> {
|
||||||
override val values: Sequence<Pair<T1, T2>>
|
override val values: Sequence<Pair<T1, T2>>
|
||||||
|
|
@ -30,6 +30,8 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
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.PreviewParameterProvider
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import io.element.android.libraries.designsystem.components.avatar.Avatar
|
import io.element.android.libraries.designsystem.components.avatar.Avatar
|
||||||
|
|
@ -68,7 +70,7 @@ fun MatrixUserHeader(
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
overflow = TextOverflow.Ellipsis,
|
overflow = TextOverflow.Ellipsis,
|
||||||
color = MaterialTheme.colorScheme.primary,
|
color = MaterialTheme.colorScheme.primary,
|
||||||
)
|
)
|
||||||
// Id
|
// Id
|
||||||
if (matrixUser.username.isNullOrEmpty().not()) {
|
if (matrixUser.username.isNullOrEmpty().not()) {
|
||||||
Spacer(modifier = Modifier.height(4.dp))
|
Spacer(modifier = Modifier.height(4.dp))
|
||||||
|
|
@ -83,40 +85,33 @@ fun MatrixUserHeader(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview
|
open class MatrixUserPreviewParameterProvider : PreviewParameterProvider<MatrixUser> {
|
||||||
@Composable
|
override val values: Sequence<MatrixUser>
|
||||||
fun MatrixUserHeaderLightPreview() = ElementPreviewLight { ContentToPreview1() }
|
get() = sequenceOf(
|
||||||
|
MatrixUser(
|
||||||
@Preview
|
id = UserId("@alice:server.org"),
|
||||||
@Composable
|
username = "Alice",
|
||||||
fun MatrixUserHeaderDarkPreview() = ElementPreviewDark { ContentToPreview1() }
|
avatarData = AvatarData("Alice")
|
||||||
|
),
|
||||||
@Composable
|
MatrixUser(
|
||||||
private fun ContentToPreview1() {
|
id = UserId("@alice:server.org"),
|
||||||
MatrixUserHeader(
|
username = null,
|
||||||
MatrixUser(
|
avatarData = AvatarData("Alice")
|
||||||
id = UserId("@alice:server.org"),
|
),
|
||||||
username = "Alice",
|
|
||||||
avatarData = AvatarData("Alice")
|
|
||||||
)
|
)
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun MatrixUserHeaderNoUserNameLightPreview() = ElementPreviewLight { ContentToPreview2() }
|
fun MatrixUserHeaderLightPreview(@PreviewParameter(MatrixUserPreviewParameterProvider::class) matrixUser: MatrixUser) =
|
||||||
|
ElementPreviewLight { ContentToPreview(matrixUser) }
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun MatrixUserHeaderNoUserNameDarkPreview() = ElementPreviewDark { ContentToPreview2() }
|
fun MatrixUserHeaderDarkPreview(@PreviewParameter(MatrixUserPreviewParameterProvider::class) matrixUser: MatrixUser) =
|
||||||
|
ElementPreviewDark { ContentToPreview(matrixUser) }
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ContentToPreview2() {
|
private fun ContentToPreview(matrixUser: MatrixUser) {
|
||||||
MatrixUserHeader(
|
MatrixUserHeader(matrixUser)
|
||||||
MatrixUser(
|
|
||||||
id = UserId("@alice:server.org"),
|
|
||||||
username = null,
|
|
||||||
avatarData = AvatarData("Alice")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue