Rename PreviewParameterProvider subclasses to the PreviewParam suffix

The `Provider` suffix reads as a dependency provider rather than as preview
data, and it collides with the real providers in the codebase — `StringProvider`,
`PickerProvider`, the login feature's `AccountProvider` — so the name says
nothing about which of the two a class is. `PreviewParam` says it.

195 classes are renamed, along with the 185 files named after them, the konsist
rule that enforces the convention, the presentation-class file templates and the
onboarding documentation.

This cannot be split. `Konsist.scopeFromProduction()` scans the whole project, so
flipping the assertion before every class has moved leaves the rule red, and a
rule that accepted either suffix during a transition would be exactly the kind of
compatibility layer this convention change is meant to remove.

Two judgement calls in the rule itself. The `name.endsWith("PreviewProvider")`
exclusion is dropped: its only job was to reject a redundant `Preview` before
`Provider`, and the new suffix already contains it; no class currently ends with
`PreviewProvider`, so removing it changes nothing today. And
`EditableAvatarViewUriProvider` is renamed rather than deleted from the exclusion
list even though no such class exists in this repository, since it presumably
comes from the modules overlaid for the enterprise build.

Nothing keyed off the old suffix: no snapshot filename contains a provider class
name, so no Paparazzi image changes, and the Kover variants match on `*Presenter`,
`*State` and `*ViewKt`, so coverage bounds are unaffected.
This commit is contained in:
hayaksi1
2026-08-17 17:40:33 +03:00
parent 12791406ca
commit 03c330ee07
388 changed files with 495 additions and 476 deletions
@@ -13,7 +13,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.ui.components.aMatrixUserList
import kotlinx.collections.immutable.toImmutableList
open class AccountSelectStateProvider : PreviewParameterProvider<AccountSelectState> {
open class AccountSelectStatePreviewParam : PreviewParameterProvider<AccountSelectState> {
override val values: Sequence<AccountSelectState>
get() = sequenceOf(
anAccountSelectState(),
@@ -80,7 +80,7 @@ fun AccountSelectView(
@PreviewsDayNight
@Composable
internal fun AccountSelectViewPreview(@PreviewParameter(AccountSelectStateProvider::class) state: AccountSelectState) = ElementPreview {
internal fun AccountSelectViewPreview(@PreviewParameter(AccountSelectStatePreviewParam::class) state: AccountSelectState) = ElementPreview {
AccountSelectView(
state = state,
onSelectAccount = {},
@@ -11,7 +11,7 @@ package io.element.android.libraries.dateformatter.impl.previews
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.dateformatter.api.DateFormatterMode
class DateFormatterModeProvider : PreviewParameterProvider<DateFormatterMode> {
class DateFormatterModePreviewParam : PreviewParameterProvider<DateFormatterMode> {
override val values: Sequence<DateFormatterMode>
get() = DateFormatterMode.entries.asSequence()
}
@@ -34,7 +34,7 @@ import kotlin.time.Instant
@Preview
@Composable
internal fun DateFormatterModeViewPreview(
@PreviewParameter(DateFormatterModeProvider::class) dateFormatterMode: DateFormatterMode,
@PreviewParameter(DateFormatterModePreviewParam::class) dateFormatterMode: DateFormatterMode,
) = ElementPreview {
DateFormatterModeView(dateFormatterMode)
}
@@ -134,7 +134,7 @@ enum class ComposerAlertLevel {
@PreviewsDayNight
@Composable
internal fun ComposerAlertMoleculePreview(
@PreviewParameter(ComposerAlertMoleculeParamsProvider::class) params: ComposerAlertMoleculeParams,
@PreviewParameter(ComposerAlertMoleculeParamsPreviewParam::class) params: ComposerAlertMoleculeParams,
) = ElementPreview {
ComposerAlertMolecule(
avatar = params.avatar,
@@ -19,7 +19,7 @@ internal data class ComposerAlertMoleculeParams(
val showIcon: Boolean = false,
)
internal class ComposerAlertMoleculeParamsProvider : PreviewParameterProvider<ComposerAlertMoleculeParams> {
internal class ComposerAlertMoleculeParamsPreviewParam : PreviewParameterProvider<ComposerAlertMoleculeParams> {
private val allLevels = sequenceOf(
ComposerAlertLevel.Info,
ComposerAlertLevel.Critical
@@ -160,7 +160,7 @@ internal fun BigIconPreview() = ElementPreview {
horizontalArrangement = Arrangement.spacedBy(10.dp),
verticalArrangement = Arrangement.spacedBy(10.dp),
) {
items(BigIconStyleProvider().values.toList()) { style ->
items(BigIconStylePreviewParam().values.toList()) { style ->
Box(
contentAlignment = Alignment.Center
) {
@@ -170,7 +170,7 @@ internal fun BigIconPreview() = ElementPreview {
}
}
internal class BigIconStyleProvider : PreviewParameterProvider<BigIcon.Style> {
internal class BigIconStylePreviewParam : PreviewParameterProvider<BigIcon.Style> {
override val values: Sequence<BigIcon.Style>
get() = sequenceOf(
BigIcon.Style.Default(Icons.Filled.CatchingPokemon),
@@ -11,7 +11,7 @@ package io.element.android.libraries.designsystem.components.async
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.architecture.AsyncAction
open class AsyncActionProvider : PreviewParameterProvider<AsyncAction<Unit>> {
open class AsyncActionPreviewParam : PreviewParameterProvider<AsyncAction<Unit>> {
override val values: Sequence<AsyncAction<Unit>>
get() = sequenceOf(
AsyncAction.Uninitialized,
@@ -82,7 +82,7 @@ object AsyncActionViewDefaults {
@PreviewsDayNight
@Composable
internal fun AsyncActionViewPreview(
@PreviewParameter(AsyncActionProvider::class) async: AsyncAction<Unit>,
@PreviewParameter(AsyncActionPreviewParam::class) async: AsyncAction<Unit>,
) = ElementPreview {
AsyncActionView(
async = async,
@@ -24,7 +24,7 @@ import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.components.avatar.internal.OverlapRatioProvider
import io.element.android.libraries.designsystem.components.avatar.internal.OverlapRatioPreviewParam
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.text.toPx
@@ -110,7 +110,7 @@ fun AvatarRow(
@Composable
@PreviewsDayNight
internal fun AvatarRowPreview(@PreviewParameter(OverlapRatioProvider::class) overlapRatio: Float) {
internal fun AvatarRowPreview(@PreviewParameter(OverlapRatioPreviewParam::class) overlapRatio: Float) {
ElementPreview {
ContentToPreview(overlapRatio)
}
@@ -118,7 +118,7 @@ internal fun AvatarRowPreview(@PreviewParameter(OverlapRatioProvider::class) ove
@Composable
@PreviewsDayNight
internal fun AvatarRowLastOnTopPreview(@PreviewParameter(OverlapRatioProvider::class) overlapRatio: Float) {
internal fun AvatarRowLastOnTopPreview(@PreviewParameter(OverlapRatioPreviewParam::class) overlapRatio: Float) {
ElementPreview {
ContentToPreview(
overlapRatio = overlapRatio,
@@ -129,7 +129,7 @@ internal fun AvatarRowLastOnTopPreview(@PreviewParameter(OverlapRatioProvider::c
@Composable
@PreviewsDayNight
internal fun AvatarRowRtlPreview(@PreviewParameter(OverlapRatioProvider::class) overlapRatio: Float) {
internal fun AvatarRowRtlPreview(@PreviewParameter(OverlapRatioPreviewParam::class) overlapRatio: Float) {
CompositionLocalProvider(
LocalLayoutDirection provides LayoutDirection.Rtl,
) {
@@ -141,7 +141,7 @@ internal fun AvatarRowRtlPreview(@PreviewParameter(OverlapRatioProvider::class)
@Composable
@PreviewsDayNight
internal fun AvatarRowLastOnTopRtlPreview(@PreviewParameter(OverlapRatioProvider::class) overlapRatio: Float) {
internal fun AvatarRowLastOnTopRtlPreview(@PreviewParameter(OverlapRatioPreviewParam::class) overlapRatio: Float) {
CompositionLocalProvider(
LocalLayoutDirection provides LayoutDirection.Rtl,
) {
@@ -10,7 +10,7 @@ package io.element.android.libraries.designsystem.components.avatar.internal
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
class OverlapRatioProvider : PreviewParameterProvider<Float> {
class OverlapRatioPreviewParam : PreviewParameterProvider<Float> {
override val values: Sequence<Float> = sequenceOf(
0f,
0.25f,
@@ -13,7 +13,7 @@ import androidx.compose.material.icons.filled.BugReport
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
open class ImageVectorProvider : PreviewParameterProvider<ImageVector?> {
open class ImageVectorPreviewParam : PreviewParameterProvider<ImageVector?> {
override val values: Sequence<ImageVector?>
get() = sequenceOf(
Icons.Default.BugReport,
@@ -86,7 +86,7 @@ private fun PreferenceIcon(
@Preview(group = PreviewGroup.Preferences)
@Composable
internal fun PreferenceIconPreview(@PreviewParameter(ImageVectorProvider::class) content: ImageVector?) =
internal fun PreferenceIconPreview(@PreviewParameter(ImageVectorPreviewParam::class) content: ImageVector?) =
ElementThemedPreview {
PreferenceIcon(
icon = content,
@@ -96,7 +96,7 @@ internal fun PreferenceIconPreview(@PreviewParameter(ImageVectorProvider::class)
@Preview(group = PreviewGroup.Preferences)
@Composable
internal fun PreferenceIconWithBadgePreview(@PreviewParameter(ImageVectorProvider::class) content: ImageVector?) =
internal fun PreferenceIconWithBadgePreview(@PreviewParameter(ImageVectorPreviewParam::class) content: ImageVector?) =
ElementThemedPreview {
PreferenceIcon(
icon = content,
@@ -10,7 +10,7 @@ package io.element.android.libraries.designsystem.utils
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
open class BooleanProvider : PreviewParameterProvider<Boolean> {
open class BooleanPreviewParam : PreviewParameterProvider<Boolean> {
override val values: Sequence<Boolean>
get() = sequenceOf(true, false)
}
@@ -19,7 +19,7 @@ import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
internal class DefaultEmojiPickerStateProvider : PreviewParameterProvider<DefaultEmojiPickerState> {
internal class DefaultEmojiPickerStatePreviewParam : PreviewParameterProvider<DefaultEmojiPickerState> {
override val values: Sequence<DefaultEmojiPickerState>
get() = sequenceOf(
aDefaultEmojiPickerState(),
@@ -166,7 +166,7 @@ private fun EmojiResults(
@PreviewsDayNight
@Composable
internal fun EmojiPickerViewPreview(@PreviewParameter(DefaultEmojiPickerStateProvider::class) state: DefaultEmojiPickerState) = ElementPreview {
internal fun EmojiPickerViewPreview(@PreviewParameter(DefaultEmojiPickerStatePreviewParam::class) state: DefaultEmojiPickerState) = ElementPreview {
EmojiPickerView(
state = state,
onSelectEmoji = {},
@@ -132,7 +132,7 @@ data class AttachmentThumbnailInfo(
@PreviewsDayNight
@Composable
internal fun AttachmentThumbnailPreview(@PreviewParameter(AttachmentThumbnailInfoProvider::class) data: AttachmentThumbnailInfo) = ElementPreview {
internal fun AttachmentThumbnailPreview(@PreviewParameter(AttachmentThumbnailInfoPreviewParam::class) data: AttachmentThumbnailInfo) = ElementPreview {
AttachmentThumbnail(
info = data,
modifier = Modifier
@@ -11,7 +11,7 @@ package io.element.android.libraries.matrix.ui.components
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.matrix.api.media.MediaSource
open class AttachmentThumbnailInfoProvider : PreviewParameterProvider<AttachmentThumbnailInfo> {
open class AttachmentThumbnailInfoPreviewParam : PreviewParameterProvider<AttachmentThumbnailInfo> {
override val values: Sequence<AttachmentThumbnailInfo>
get() = sequenceOf(
anAttachmentThumbnailInfo(type = AttachmentThumbnailType.Image),
@@ -158,7 +158,7 @@ fun CreateDmConfirmationBottomSheet(
@Composable
internal fun CreateDmConfirmationBottomSheetPreview(
@PreviewParameter(
CreateDmConfirmationBottomSheetStateProvider::class
CreateDmConfirmationBottomSheetStatePreviewParam::class
) state: CreateDmConfirmationBottomSheetState
) = ElementPreview(fillMaxSize = true) {
CreateDmConfirmationBottomSheet(
@@ -174,7 +174,7 @@ data class CreateDmConfirmationBottomSheetState(
val isUserIdentityUnknown: Boolean,
)
class CreateDmConfirmationBottomSheetStateProvider : PreviewParameterProvider<CreateDmConfirmationBottomSheetState> {
class CreateDmConfirmationBottomSheetStatePreviewParam : PreviewParameterProvider<CreateDmConfirmationBottomSheetState> {
override val values = sequenceOf(
CreateDmConfirmationBottomSheetState(matrixUser = aMatrixUser(), isUserIdentityUnknown = false),
CreateDmConfirmationBottomSheetState(matrixUser = aMatrixUser(), isUserIdentityUnknown = true),
@@ -79,6 +79,6 @@ fun MatrixUserHeader(
@PreviewsDayNight
@Composable
internal fun MatrixUserHeaderPreview(@PreviewParameter(MatrixUserProvider::class) matrixUser: MatrixUser) = ElementPreview {
internal fun MatrixUserHeaderPreview(@PreviewParameter(MatrixUserPreviewParam::class) matrixUser: MatrixUser) = ElementPreview {
MatrixUserHeader(matrixUser)
}
@@ -24,7 +24,7 @@ import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.user.DisplayedStatus
import io.element.android.libraries.matrix.api.user.MatrixUser
open class MatrixUserProvider : PreviewParameterProvider<MatrixUser> {
open class MatrixUserPreviewParam : PreviewParameterProvider<MatrixUser> {
override val values: Sequence<MatrixUser>
get() = sequenceOf(
aMatrixUser(),
@@ -33,7 +33,7 @@ open class MatrixUserProvider : PreviewParameterProvider<MatrixUser> {
)
}
open class MatrixUserWithAvatarProvider : PreviewParameterProvider<MatrixUser?> {
open class MatrixUserWithAvatarPreviewParam : PreviewParameterProvider<MatrixUser?> {
override val values: Sequence<MatrixUser?>
get() = sequenceOf(
aMatrixUser(displayName = USER_NAME_JOHN_DOE),
@@ -46,6 +46,6 @@ fun MatrixUserRow(
@PreviewsDayNight
@Composable
internal fun MatrixUserRowPreview(@PreviewParameter(MatrixUserProvider::class) matrixUser: MatrixUser) = ElementPreview {
internal fun MatrixUserRowPreview(@PreviewParameter(MatrixUserPreviewParam::class) matrixUser: MatrixUser) = ElementPreview {
MatrixUserRow(matrixUser)
}
@@ -16,7 +16,7 @@ import io.element.android.libraries.matrix.ui.model.SelectRoomInfo
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
class SelectRoomInfoProvider : PreviewParameterProvider<SelectRoomInfo> {
class SelectRoomInfoPreviewParam : PreviewParameterProvider<SelectRoomInfo> {
override val values: Sequence<SelectRoomInfo>
get() = sequenceOf(
aSelectRoomInfo(roomId = RoomId("!room1:domain")),
@@ -51,7 +51,7 @@ fun SelectedRoom(
@PreviewsDayNight
@Composable
internal fun SelectedRoomPreview(
@PreviewParameter(SelectRoomInfoProvider::class) roomInfo: SelectRoomInfo
@PreviewParameter(SelectRoomInfoPreviewParam::class) roomInfo: SelectRoomInfo
) = ElementPreview {
SelectedRoom(
roomInfo = roomInfo,
@@ -62,7 +62,7 @@ internal fun SelectedRoomPreview(
@PreviewsDayNight
@Composable
internal fun SelectedRoomRtlPreview(
@PreviewParameter(SelectRoomInfoProvider::class) roomInfo: SelectRoomInfo
@PreviewParameter(SelectRoomInfoPreviewParam::class) roomInfo: SelectRoomInfo
) = CompositionLocalProvider(
LocalLayoutDirection provides LayoutDirection.Rtl,
) {
@@ -44,7 +44,7 @@ fun SelectedUser(
@PreviewsDayNight
@Composable
internal fun SelectedUserPreview(@PreviewParameter(MatrixUserWithAvatarProvider::class) user: MatrixUser) = ElementPreview {
internal fun SelectedUserPreview(@PreviewParameter(MatrixUserWithAvatarPreviewParam::class) user: MatrixUser) = ElementPreview {
SelectedUser(
matrixUser = user,
canRemove = true,
@@ -210,7 +210,7 @@ private fun SpaceRoomItemScaffold(
@Composable
@PreviewsDayNight
internal fun SpaceRoomItemViewPreview(@PreviewParameter(SpaceRoomProvider::class) spaceRoom: SpaceRoom) = ElementPreview {
internal fun SpaceRoomItemViewPreview(@PreviewParameter(SpaceRoomPreviewParam::class) spaceRoom: SpaceRoom) = ElementPreview {
SpaceRoomItemView(
spaceRoom = spaceRoom,
showUnreadIndicator = spaceRoom.state == CurrentUserMembership.INVITED,
@@ -17,7 +17,7 @@ import io.element.android.libraries.matrix.api.room.RoomType
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
import io.element.android.libraries.previewutils.room.aSpaceRoom
class SpaceRoomProvider : PreviewParameterProvider<SpaceRoom> {
class SpaceRoomPreviewParam : PreviewParameterProvider<SpaceRoom> {
override val values: Sequence<SpaceRoom> = sequenceOf(
aSpaceRoom(
roomType = RoomType.Room,
@@ -35,7 +35,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageT
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.persistentMapOf
open class InReplyToDetailsProvider : PreviewParameterProvider<InReplyToDetails> {
open class InReplyToDetailsPreviewParam : PreviewParameterProvider<InReplyToDetails> {
override val values: Sequence<InReplyToDetails>
get() = sequenceOf(
aMessageContent(
@@ -99,7 +99,7 @@ open class InReplyToDetailsProvider : PreviewParameterProvider<InReplyToDetails>
}
}
class InReplyToDetailsDisambiguatedProvider : InReplyToDetailsProvider() {
class InReplyToDetailsDisambiguatedPreviewParam : InReplyToDetailsPreviewParam() {
override val values: Sequence<InReplyToDetails>
get() = sequenceOf(
aMessageContent(
@@ -114,7 +114,7 @@ class InReplyToDetailsDisambiguatedProvider : InReplyToDetailsProvider() {
}
}
class InReplyToDetailsInformativeProvider : InReplyToDetailsProvider() {
class InReplyToDetailsInformativePreviewParam : InReplyToDetailsPreviewParam() {
override val values: Sequence<InReplyToDetails>
get() = sequenceOf(
RedactedContent,
@@ -126,7 +126,7 @@ class InReplyToDetailsInformativeProvider : InReplyToDetailsProvider() {
}
}
class InReplyToDetailsOtherProvider : InReplyToDetailsProvider() {
class InReplyToDetailsOtherPreviewParam : InReplyToDetailsPreviewParam() {
override val values: Sequence<InReplyToDetails>
get() = sequenceOf(
InReplyToDetails.Loading(eventId = EventId("\$anEventId")),
@@ -236,7 +236,7 @@ private fun ReplyToNotFoundContent(
@PreviewsDayNight
@Composable
internal fun InReplyToViewPreview(@PreviewParameter(provider = InReplyToDetailsProvider::class) inReplyTo: InReplyToDetails) = ElementPreview {
internal fun InReplyToViewPreview(@PreviewParameter(provider = InReplyToDetailsPreviewParam::class) inReplyTo: InReplyToDetails) = ElementPreview {
InReplyToView(
inReplyTo = inReplyTo,
hideImage = false,
@@ -134,7 +134,7 @@ private fun RowScope.SecondaryText(
@PreviewsDayNight
@Composable
internal fun SenderNamePreview(
@PreviewParameter(SenderNameDataProvider::class) senderNameData: SenderNameData,
@PreviewParameter(SenderNameDataPreviewParam::class) senderNameData: SenderNameData,
) = ElementPreview {
SenderName(
senderId = senderNameData.userId,
@@ -20,7 +20,7 @@ data class SenderNameData(
val senderNameMode: SenderNameMode,
)
open class SenderNameDataProvider : PreviewParameterProvider<SenderNameData> {
open class SenderNameDataPreviewParam : PreviewParameterProvider<SenderNameData> {
override val values: Sequence<SenderNameData>
get() = sequenceOf(
SenderNameMode.Timeline(mainColor = Color.Red),
@@ -30,7 +30,7 @@ sealed interface LoadingRoomState {
data class Loaded(val room: JoinedRoom) : LoadingRoomState
}
open class LoadingRoomStateProvider : PreviewParameterProvider<LoadingRoomState> {
open class LoadingRoomStatePreviewParam : PreviewParameterProvider<LoadingRoomState> {
override val values: Sequence<LoadingRoomState>
get() = sequenceOf(
LoadingRoomState.Loading,
@@ -15,7 +15,7 @@ import io.element.android.libraries.matrix.api.media.MediaSource
import io.element.android.libraries.mediaviewer.api.MediaInfo
import io.element.android.libraries.mediaviewer.api.anImageMediaInfo
open class MediaBottomSheetStateDeleteConfirmationProvider : PreviewParameterProvider<MediaBottomSheetState.DeleteConfirmation> {
open class MediaBottomSheetStateDeleteConfirmationPreviewParam : PreviewParameterProvider<MediaBottomSheetState.DeleteConfirmation> {
override val values: Sequence<MediaBottomSheetState.DeleteConfirmation>
get() = sequenceOf(
aMediaBottomSheetStateDeleteConfirmation(),
@@ -14,7 +14,7 @@ import io.element.android.libraries.mediaviewer.api.MediaInfo
import io.element.android.libraries.mediaviewer.api.anApkMediaInfo
import io.element.android.libraries.mediaviewer.api.anImageMediaInfo
open class MediaBottomSheetStateDetailsProvider : PreviewParameterProvider<MediaBottomSheetState.Details> {
open class MediaBottomSheetStateDetailsPreviewParam : PreviewParameterProvider<MediaBottomSheetState.Details> {
override val values: Sequence<MediaBottomSheetState.Details>
get() = sequenceOf(
aMediaBottomSheetStateDetails(),
@@ -168,7 +168,7 @@ private fun MediaRow(
@PreviewsDayNight
@Composable
internal fun MediaDeleteConfirmationBottomSheetPreview(
@PreviewParameter(provider = MediaBottomSheetStateDeleteConfirmationProvider::class) state: MediaBottomSheetState.DeleteConfirmation,
@PreviewParameter(provider = MediaBottomSheetStateDeleteConfirmationPreviewParam::class) state: MediaBottomSheetState.DeleteConfirmation,
) = ElementPreview(fillMaxSize = true) {
MediaDeleteConfirmationBottomSheet(
state = state,
@@ -266,7 +266,7 @@ private fun SectionText(
@PreviewsDayNight
@Composable
internal fun MediaDetailsBottomSheetPreview(
@PreviewParameter(MediaBottomSheetStateDetailsProvider::class) state: MediaBottomSheetState.Details,
@PreviewParameter(MediaBottomSheetStateDetailsPreviewParam::class) state: MediaBottomSheetState.Details,
) = ElementPreview(fillMaxSize = true) {
MediaDetailsBottomSheet(
state = state,
@@ -28,7 +28,7 @@ import io.element.android.libraries.mediaviewer.impl.model.aMediaItemVideo
import io.element.android.libraries.mediaviewer.impl.model.aMediaItemVoice
import kotlinx.collections.immutable.toImmutableList
open class MediaGalleryStateProvider : PreviewParameterProvider<MediaGalleryState> {
open class MediaGalleryStatePreviewParam : PreviewParameterProvider<MediaGalleryState> {
override val values: Sequence<MediaGalleryState>
get() = sequenceOf(
aMediaGalleryState(
@@ -597,7 +597,7 @@ private fun LoadingContent(
@PreviewsDayNight
@Composable
internal fun MediaGalleryViewPreview(
@PreviewParameter(MediaGalleryStateProvider::class) state: MediaGalleryState
@PreviewParameter(MediaGalleryStatePreviewParam::class) state: MediaGalleryState
) = ElementPreview {
CompositionLocalProvider(
LocalMediaItemPresenterFactories provides aFakeMediaItemPresenterFactories(),
@@ -46,7 +46,7 @@ fun AudioItemView(
@PreviewsDayNight
@Composable
internal fun AudioItemViewPreview(
@PreviewParameter(MediaItemAudioProvider::class) audio: MediaItem.Audio,
@PreviewParameter(MediaItemAudioPreviewParam::class) audio: MediaItem.Audio,
) = ElementPreview {
val states = remember {
listOf(
@@ -45,7 +45,7 @@ fun DateItemView(
@PreviewsDayNight
@Composable
internal fun DateItemViewPreview(
@PreviewParameter(MediaItemDateSeparatorProvider::class) date: MediaItem.DateSeparator,
@PreviewParameter(MediaItemDateSeparatorPreviewParam::class) date: MediaItem.DateSeparator,
) = ElementPreview {
DateItemView(date)
}
@@ -46,7 +46,7 @@ fun FileItemView(
@PreviewsDayNight
@Composable
internal fun FileItemViewPreview(
@PreviewParameter(MediaItemFileProvider::class) file: MediaItem.File,
@PreviewParameter(MediaItemFilePreviewParam::class) file: MediaItem.File,
) = ElementPreview {
val states = remember {
listOf(
@@ -13,7 +13,7 @@ import io.element.android.libraries.core.preview.loremIpsum
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
import io.element.android.libraries.mediaviewer.impl.model.aMediaItemAudio
class MediaItemAudioProvider : PreviewParameterProvider<MediaItem.Audio> {
class MediaItemAudioPreviewParam : PreviewParameterProvider<MediaItem.Audio> {
override val values: Sequence<MediaItem.Audio>
get() = sequenceOf(
aMediaItemAudio(),
@@ -12,7 +12,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
import io.element.android.libraries.mediaviewer.impl.model.aMediaItemDateSeparator
class MediaItemDateSeparatorProvider : PreviewParameterProvider<MediaItem.DateSeparator> {
class MediaItemDateSeparatorPreviewParam : PreviewParameterProvider<MediaItem.DateSeparator> {
override val values: Sequence<MediaItem.DateSeparator>
get() = sequenceOf(
aMediaItemDateSeparator(),
@@ -13,7 +13,7 @@ import io.element.android.libraries.core.preview.loremIpsum
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
import io.element.android.libraries.mediaviewer.impl.model.aMediaItemFile
class MediaItemFileProvider : PreviewParameterProvider<MediaItem.File> {
class MediaItemFilePreviewParam : PreviewParameterProvider<MediaItem.File> {
override val values: Sequence<MediaItem.File>
get() = sequenceOf(
aMediaItemFile(),
@@ -12,7 +12,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
import io.element.android.libraries.mediaviewer.impl.model.aMediaItemVideo
class MediaItemVideoProvider : PreviewParameterProvider<MediaItem.Video> {
class MediaItemVideoPreviewParam : PreviewParameterProvider<MediaItem.Video> {
override val values: Sequence<MediaItem.Video>
get() = sequenceOf(
aMediaItemVideo(),
@@ -13,7 +13,7 @@ import io.element.android.libraries.core.preview.loremIpsum
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
import io.element.android.libraries.mediaviewer.impl.model.aMediaItemVoice
class MediaItemVoiceProvider : PreviewParameterProvider<MediaItem.Voice> {
class MediaItemVoicePreviewParam : PreviewParameterProvider<MediaItem.Voice> {
override val values: Sequence<MediaItem.Voice>
get() = sequenceOf(
aMediaItemVoice(),
@@ -117,7 +117,7 @@ private fun VideoInfoRow(
@PreviewsDayNight
@Composable
internal fun VideoItemViewPreview(
@PreviewParameter(MediaItemVideoProvider::class) video: MediaItem.Video,
@PreviewParameter(MediaItemVideoPreviewParam::class) video: MediaItem.Video,
) = ElementPreview {
VideoItemView(
video = video,
@@ -54,7 +54,7 @@ import io.element.android.libraries.mediaviewer.impl.model.aMediaItemVoice
import io.element.android.libraries.ui.strings.CommonStrings
import io.element.android.libraries.voiceplayer.api.VoiceMessageEvent
import io.element.android.libraries.voiceplayer.api.VoiceMessageState
import io.element.android.libraries.voiceplayer.api.VoiceMessageStateProvider
import io.element.android.libraries.voiceplayer.api.VoiceMessageStatePreviewParam
import io.element.android.libraries.voiceplayer.api.aVoiceMessageState
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.delay
@@ -279,7 +279,7 @@ private fun CustomIconButton(
@PreviewsDayNight
@Composable
internal fun VoiceItemViewPreview(
@PreviewParameter(MediaItemVoiceProvider::class) voice: MediaItem.Voice,
@PreviewParameter(MediaItemVoicePreviewParam::class) voice: MediaItem.Voice,
) = ElementPreview {
val states = remember {
listOf(
@@ -304,7 +304,7 @@ internal fun VoiceItemViewPreview(
@PreviewsDayNight
@Composable
internal fun VoiceItemViewPlayPreview(
@PreviewParameter(VoiceMessageStateProvider::class) state: VoiceMessageState,
@PreviewParameter(VoiceMessageStatePreviewParam::class) state: VoiceMessageState,
) = ElementPreview {
val validationState = remember {
listOf(
@@ -393,7 +393,7 @@ private fun AudioInfoView(
@PreviewsDayNight
@Composable
internal fun MediaAudioViewPreview(
@PreviewParameter(MediaInfoAudioProvider::class) info: MediaInfo
@PreviewParameter(MediaInfoAudioPreviewParam::class) info: MediaInfo
) = ElementPreview {
MediaAudioView(
modifier = Modifier.fillMaxSize(),
@@ -13,7 +13,7 @@ import io.element.android.libraries.designsystem.components.media.WaveFormSample
import io.element.android.libraries.mediaviewer.api.MediaInfo
import io.element.android.libraries.mediaviewer.api.anAudioMediaInfo
open class MediaInfoAudioProvider : PreviewParameterProvider<MediaInfo> {
open class MediaInfoAudioPreviewParam : PreviewParameterProvider<MediaInfo> {
override val values: Sequence<MediaInfo>
get() = sequenceOf(
anAudioMediaInfo(),
@@ -114,7 +114,7 @@ fun MediaFileView(
@PreviewsDayNight
@Composable
internal fun MediaFileViewPreview(
@PreviewParameter(MediaInfoFileProvider::class) info: MediaInfo
@PreviewParameter(MediaInfoFilePreviewParam::class) info: MediaInfo
) = ElementPreview {
MediaFileView(
modifier = Modifier.fillMaxSize(),
@@ -14,7 +14,7 @@ import io.element.android.libraries.mediaviewer.api.aZipMediaInfo
import io.element.android.libraries.mediaviewer.api.anApkMediaInfo
import io.element.android.libraries.mediaviewer.api.anAudioMediaInfo
open class MediaInfoFileProvider : PreviewParameterProvider<MediaInfo> {
open class MediaInfoFilePreviewParam : PreviewParameterProvider<MediaInfo> {
override val values: Sequence<MediaInfo>
get() = sequenceOf(
aZipMediaInfo(),
@@ -10,7 +10,7 @@ package io.element.android.libraries.mediaviewer.impl.local.player
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
open class MediaPlayerControllerStateProvider : PreviewParameterProvider<MediaPlayerControllerState> {
open class MediaPlayerControllerStatePreviewParam : PreviewParameterProvider<MediaPlayerControllerState> {
override val values: Sequence<MediaPlayerControllerState> = sequenceOf(
aMediaPlayerControllerState(),
aMediaPlayerControllerState(
@@ -213,7 +213,7 @@ fun MediaPlayerControllerView(
@PreviewsDayNight
@Composable
internal fun MediaPlayerControllerViewPreview(
@PreviewParameter(MediaPlayerControllerStateProvider::class) state: MediaPlayerControllerState
@PreviewParameter(MediaPlayerControllerStatePreviewParam::class) state: MediaPlayerControllerState
) = ElementPreview {
MediaPlayerControllerView(
state = state,
@@ -13,7 +13,7 @@ import io.element.android.libraries.architecture.AsyncData
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
open class TextFileContentProvider : PreviewParameterProvider<AsyncData<ImmutableList<String>>> {
open class TextFileContentPreviewParam : PreviewParameterProvider<AsyncData<ImmutableList<String>>> {
override val values: Sequence<AsyncData<ImmutableList<String>>>
get() = sequenceOf(
AsyncData.Uninitialized,
@@ -98,7 +98,7 @@ private fun TextFileContentView(
@PreviewsDayNight
@Composable
internal fun TextFileContentViewPreview(
@PreviewParameter(TextFileContentProvider::class) text: AsyncData<ImmutableList<String>>,
@PreviewParameter(TextFileContentPreviewParam::class) text: AsyncData<ImmutableList<String>>,
) = ElementPreview {
TextFileContentView(
data = text,
@@ -41,7 +41,7 @@ private const val LONG_CAPTION = "This is a very long caption that should be scr
"Line 4: Duis aute irure dolor in reprehenderit in voluptate velit esse cillum. " +
"Line 5: Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia."
open class MediaViewerStateProvider : PreviewParameterProvider<MediaViewerState> {
open class MediaViewerStatePreviewParam : PreviewParameterProvider<MediaViewerState> {
override val values: Sequence<MediaViewerState>
get() = sequenceOf(
aMediaViewerState(),
@@ -749,7 +749,7 @@ private fun ErrorView(
// Only preview in dark, dark theme is forced on the Node.
@Preview
@Composable
internal fun MediaViewerViewPreview(@PreviewParameter(MediaViewerStateProvider::class) state: MediaViewerState) = ElementPreviewDark {
internal fun MediaViewerViewPreview(@PreviewParameter(MediaViewerStatePreviewParam::class) state: MediaViewerState) = ElementPreviewDark {
MediaViewerView(
state = state,
audioFocus = null,
@@ -760,7 +760,7 @@ internal fun MediaViewerViewPreview(@PreviewParameter(MediaViewerStateProvider::
@Preview(device = "${Devices.PHONE}, orientation=landscape")
@Composable
internal fun MediaViewerViewLandscapePreview(@PreviewParameter(MediaViewerStateProvider::class) state: MediaViewerState) = ElementPreviewDark {
internal fun MediaViewerViewLandscapePreview(@PreviewParameter(MediaViewerStatePreviewParam::class) state: MediaViewerState) = ElementPreviewDark {
MediaViewerView(
state = state,
audioFocus = null,
@@ -11,7 +11,7 @@ package io.element.android.libraries.permissions.api
import android.Manifest
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
open class PermissionsStateProvider : PreviewParameterProvider<PermissionsState> {
open class PermissionsStatePreviewParam : PreviewParameterProvider<PermissionsState> {
override val values: Sequence<PermissionsState>
get() = sequenceOf(
aPermissionsState(showDialog = true, permission = Manifest.permission.POST_NOTIFICATIONS),
@@ -55,7 +55,7 @@ private fun String.toDialogContent(): String {
@PreviewsDayNight
@Composable
internal fun PermissionsViewPreview(@PreviewParameter(PermissionsStateProvider::class) state: PermissionsState) = ElementPreview {
internal fun PermissionsViewPreview(@PreviewParameter(PermissionsStatePreviewParam::class) state: PermissionsState) = ElementPreview {
PermissionsView(
state = state,
)
@@ -20,7 +20,7 @@ import io.element.android.libraries.roomselect.api.RoomSelectMode
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
open class RoomSelectStateProvider : PreviewParameterProvider<RoomSelectState> {
open class RoomSelectStatePreviewParam : PreviewParameterProvider<RoomSelectState> {
override val values: Sequence<RoomSelectState>
get() = sequenceOf(
aRoomSelectState(),
@@ -296,7 +296,7 @@ private fun RoomSummaryView(
@PreviewsDayNight
@Composable
internal fun RoomSelectViewPreview(@PreviewParameter(RoomSelectStateProvider::class) state: RoomSelectState) = ElementPreview {
internal fun RoomSelectViewPreview(@PreviewParameter(RoomSelectStatePreviewParam::class) state: RoomSelectState) = ElementPreview {
RoomSelectView(
state = state,
onDismiss = {},
@@ -192,7 +192,7 @@ private fun ReplyToModeView(
@PreviewsDayNight
@Composable
internal fun ComposerModeViewPreview(
@PreviewParameter(MessageComposerModeSpecialProvider::class) mode: MessageComposerMode.Special
@PreviewParameter(MessageComposerModeSpecialPreviewParam::class) mode: MessageComposerMode.Special
) = ElementPreview {
ComposerModeView(
composerMode = mode,
@@ -9,15 +9,15 @@
package io.element.android.libraries.textcomposer
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetailsProvider
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetailsPreviewParam
import io.element.android.libraries.textcomposer.model.MessageComposerMode
class MessageComposerModeSpecialProvider : PreviewParameterProvider<MessageComposerMode.Special> {
class MessageComposerModeSpecialPreviewParam : PreviewParameterProvider<MessageComposerMode.Special> {
override val values: Sequence<MessageComposerMode.Special> = sequenceOf(
aMessageComposerModeEdit()
) +
// Keep only 3 values from InReplyToDetailsProvider
InReplyToDetailsProvider().values.take(3).map {
// Keep only 3 values from InReplyToDetailsPreviewParam
InReplyToDetailsPreviewParam().values.take(3).map {
aMessageComposerModeReply(
replyToDetails = it
)
@@ -76,7 +76,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.MessageConten
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.toEventOrTransactionId
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetailsProvider
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetailsPreviewParam
import io.element.android.libraries.matrix.ui.messages.reply.aProfileDetailsReady
import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.testtags.testTag
@@ -859,7 +859,7 @@ internal fun MarkdownTextComposerEditPreview() = ElementPreview {
@PreviewsDayNight
@Composable
internal fun TextComposerReplyPreview(@PreviewParameter(InReplyToDetailsProvider::class) inReplyToDetails: InReplyToDetails) = ElementPreview {
internal fun TextComposerReplyPreview(@PreviewParameter(InReplyToDetailsPreviewParam::class) inReplyToDetails: InReplyToDetails) = ElementPreview {
PreviewColumn(
items = aTextEditorStateRichList()
) { textEditorState ->
@@ -883,7 +883,7 @@ internal fun TextComposerReplyPreview(@PreviewParameter(InReplyToDetailsProvider
heightDp = 800,
)
@Composable
internal fun TextComposerReplyNotEncryptedPreview(@PreviewParameter(InReplyToDetailsProvider::class) inReplyToDetails: InReplyToDetails) = ElementPreview {
internal fun TextComposerReplyNotEncryptedPreview(@PreviewParameter(InReplyToDetailsPreviewParam::class) inReplyToDetails: InReplyToDetails) = ElementPreview {
PreviewColumn(
items = aTextEditorStateRichList(isRoomEncrypted = false)
) { textEditorState ->
@@ -12,7 +12,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTestState
import kotlinx.collections.immutable.toImmutableList
open class TroubleshootNotificationsStateProvider : PreviewParameterProvider<TroubleshootNotificationsState> {
open class TroubleshootNotificationsStatePreviewParam : PreviewParameterProvider<TroubleshootNotificationsState> {
override val values: Sequence<TroubleshootNotificationsState>
get() = sequenceOf(
aTroubleshootNotificationsState(
@@ -207,7 +207,7 @@ private fun ColumnScope.TestSuiteView(
@PreviewsDayNight
@Composable
internal fun TroubleshootNotificationsViewPreview(
@PreviewParameter(TroubleshootNotificationsStateProvider::class) state: TroubleshootNotificationsState,
@PreviewParameter(TroubleshootNotificationsStatePreviewParam::class) state: TroubleshootNotificationsState,
) = ElementPreview {
TroubleshootNotificationsView(
state = state,
@@ -16,7 +16,7 @@ import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.push.api.history.PushHistoryItem
import kotlinx.collections.immutable.toImmutableList
open class PushHistoryStateProvider : PreviewParameterProvider<PushHistoryState> {
open class PushHistoryStatePreviewParam : PreviewParameterProvider<PushHistoryState> {
override val values: Sequence<PushHistoryState>
get() = sequenceOf(
aPushHistoryState(),
@@ -268,7 +268,7 @@ private fun PushHistoryItem(
@PreviewsDayNight
@Composable
internal fun PushHistoryViewPreview(
@PreviewParameter(PushHistoryStateProvider::class) state: PushHistoryState,
@PreviewParameter(PushHistoryStatePreviewParam::class) state: PushHistoryState,
) = ElementPreview {
PushHistoryView(
state = state,
@@ -10,7 +10,7 @@ package io.element.android.libraries.voiceplayer.api
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
open class VoiceMessageStateProvider : PreviewParameterProvider<VoiceMessageState> {
open class VoiceMessageStatePreviewParam : PreviewParameterProvider<VoiceMessageState> {
override val values: Sequence<VoiceMessageState>
get() = sequenceOf(
aVoiceMessageState(