Improve preview.

This commit is contained in:
Benoit Marty
2024-12-10 13:10:25 +01:00
parent c5568b430d
commit b3648c1d18
8 changed files with 53 additions and 32 deletions

View File

@@ -13,9 +13,10 @@ import io.element.android.libraries.matrix.api.core.UniqueId
import io.element.android.libraries.mediaviewer.impl.details.MediaBottomSheetState
import io.element.android.libraries.mediaviewer.impl.details.aMediaDetailsBottomSheetState
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aDate
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aFile
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aVideo
import io.element.android.libraries.mediaviewer.impl.gallery.ui.anImage
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aMediaItemFile
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aMediaItemVideo
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aMediaItemImage
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aMediaItemLoadingIndicator
import kotlinx.collections.immutable.toImmutableList
open class MediaGalleryStateProvider : PreviewParameterProvider<MediaGalleryState> {
@@ -29,18 +30,19 @@ open class MediaGalleryStateProvider : PreviewParameterProvider<MediaGalleryStat
aGroupedMediaItems(
imageAndVideoItems = listOf(
aDate(id = UniqueId("0")),
anImage(id = UniqueId("1")),
aMediaItemImage(id = UniqueId("1")),
aDate(
id = UniqueId("2"),
formattedDate = "September 2004",
),
anImage(id = UniqueId("3")),
aVideo(id = UniqueId("4")),
anImage(id = UniqueId("5")),
anImage(id = UniqueId("6")),
anImage(id = UniqueId("7")),
anImage(id = UniqueId("8")),
anImage(id = UniqueId("9")),
aMediaItemImage(id = UniqueId("3")),
aMediaItemVideo(id = UniqueId("4")),
aMediaItemImage(id = UniqueId("5")),
aMediaItemImage(id = UniqueId("6")),
aMediaItemImage(id = UniqueId("7")),
aMediaItemImage(id = UniqueId("8")),
aMediaItemImage(id = UniqueId("9")),
aMediaItemLoadingIndicator(),
).toImmutableList()
)
),
@@ -54,15 +56,14 @@ open class MediaGalleryStateProvider : PreviewParameterProvider<MediaGalleryStat
aGroupedMediaItems(
fileItems = listOf(
aDate(id = UniqueId("0")),
aFile(id = UniqueId("1")),
aMediaItemFile(id = UniqueId("1")),
aDate(
id = UniqueId("2"),
formattedDate = "September 2004",
),
aFile(id = UniqueId("3")),
aFile(id = UniqueId("4")),
aFile(id = UniqueId("5")),
aFile(id = UniqueId("6")),
aMediaItemFile(id = UniqueId("3")),
aMediaItemFile(id = UniqueId("4")),
aMediaItemLoadingIndicator(),
).toImmutableList()
)
),

View File

@@ -302,9 +302,7 @@ private fun MediaGalleryImageGrid(
when (item) {
is MediaItem.LoadingIndicator,
is MediaItem.DateSeparator -> GridItemSpan(columns)
is MediaItem.Image,
is MediaItem.Video,
is MediaItem.File -> GridItemSpan(1)
is MediaItem.Event -> GridItemSpan(1)
}
},
key = { it.id() },

View File

@@ -67,7 +67,7 @@ fun ImageItemView(
@Composable
internal fun ImageItemViewPreview() = ElementPreview {
ImageItemView(
image = anImage(),
image = aMediaItemImage(),
onClick = {},
onLongClick = {},
)

View File

@@ -17,18 +17,18 @@ import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
class MediaItemFileProvider : PreviewParameterProvider<MediaItem.File> {
override val values: Sequence<MediaItem.File>
get() = sequenceOf(
aFile(),
aFile(
aMediaItemFile(),
aMediaItemFile(
filename = "A long filename that should be truncated.jpg",
caption = "A caption",
),
aFile(
aMediaItemFile(
caption = loremIpsum,
),
)
}
fun aFile(
fun aMediaItemFile(
id: UniqueId = UniqueId("fileId"),
filename: String = "filename",
caption: String? = null,

View File

@@ -14,7 +14,7 @@ import io.element.android.libraries.matrix.api.media.MediaSource
import io.element.android.libraries.mediaviewer.api.anImageMediaInfo
import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
fun anImage(
fun aMediaItemImage(
id: UniqueId = UniqueId("imageId"),
eventId: EventId? = null,
senderId: UserId? = null,

View File

@@ -0,0 +1,22 @@
/*
* Copyright 2024 New Vector Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only
* Please see LICENSE in the repository root for full details.
*/
package io.element.android.libraries.mediaviewer.impl.gallery.ui
import io.element.android.libraries.matrix.api.core.UniqueId
import io.element.android.libraries.matrix.api.timeline.Timeline
import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
fun aMediaItemLoadingIndicator(
id: UniqueId = UniqueId("loadingId"),
): MediaItem.LoadingIndicator {
return MediaItem.LoadingIndicator(
id = id,
direction = Timeline.PaginationDirection.BACKWARDS,
timestamp = 123,
)
}

View File

@@ -16,14 +16,14 @@ import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
class MediaItemVideoProvider : PreviewParameterProvider<MediaItem.Video> {
override val values: Sequence<MediaItem.Video>
get() = sequenceOf(
aVideo(),
aVideo(
aMediaItemVideo(),
aMediaItemVideo(
duration = null,
),
)
}
fun aVideo(
fun aMediaItemVideo(
id: UniqueId = UniqueId("videoId"),
mediaSource: MediaSource = MediaSource(""),
duration: String? = "1:23",

View File

@@ -21,7 +21,7 @@ import io.element.android.libraries.matrix.test.media.FakeMatrixMediaLoader
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
import io.element.android.libraries.matrix.test.timeline.FakeTimeline
import io.element.android.libraries.mediaviewer.impl.details.MediaBottomSheetState
import io.element.android.libraries.mediaviewer.impl.gallery.ui.anImage
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aMediaItemImage
import io.element.android.libraries.mediaviewer.test.FakeLocalMediaActions
import io.element.android.libraries.mediaviewer.test.FakeLocalMediaFactory
import io.element.android.tests.testutils.WarmUpRule
@@ -119,7 +119,7 @@ class MediaGalleryPresenterTest {
skipItems(1)
val initialState = awaitItem()
assertThat(initialState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
val item = anImage(
val item = aMediaItemImage(
eventId = AN_EVENT_ID,
senderId = A_USER_ID,
)
@@ -163,7 +163,7 @@ class MediaGalleryPresenterTest {
skipItems(1)
val initialState = awaitItem()
assertThat(initialState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
val item = anImage(
val item = aMediaItemImage(
eventId = AN_EVENT_ID,
senderId = A_USER_ID_2,
)
@@ -196,7 +196,7 @@ class MediaGalleryPresenterTest {
skipItems(1)
val initialState = awaitItem()
// Delete bottom sheet
val item = anImage()
val item = aMediaItemImage()
initialState.eventSink(MediaGalleryEvents.ConfirmDelete(AN_EVENT_ID, item.mediaInfo, item.thumbnailSource))
val deleteState = awaitItem()
assertThat(deleteState.mediaBottomSheetState).isEqualTo(