Improve preview.
This commit is contained in:
parent
c5568b430d
commit
b3648c1d18
8 changed files with 53 additions and 32 deletions
|
|
@ -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.MediaBottomSheetState
|
||||||
import io.element.android.libraries.mediaviewer.impl.details.aMediaDetailsBottomSheetState
|
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.aDate
|
||||||
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aFile
|
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aMediaItemFile
|
||||||
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aVideo
|
import io.element.android.libraries.mediaviewer.impl.gallery.ui.aMediaItemVideo
|
||||||
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.impl.gallery.ui.aMediaItemLoadingIndicator
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
|
|
||||||
open class MediaGalleryStateProvider : PreviewParameterProvider<MediaGalleryState> {
|
open class MediaGalleryStateProvider : PreviewParameterProvider<MediaGalleryState> {
|
||||||
|
|
@ -29,18 +30,19 @@ open class MediaGalleryStateProvider : PreviewParameterProvider<MediaGalleryStat
|
||||||
aGroupedMediaItems(
|
aGroupedMediaItems(
|
||||||
imageAndVideoItems = listOf(
|
imageAndVideoItems = listOf(
|
||||||
aDate(id = UniqueId("0")),
|
aDate(id = UniqueId("0")),
|
||||||
anImage(id = UniqueId("1")),
|
aMediaItemImage(id = UniqueId("1")),
|
||||||
aDate(
|
aDate(
|
||||||
id = UniqueId("2"),
|
id = UniqueId("2"),
|
||||||
formattedDate = "September 2004",
|
formattedDate = "September 2004",
|
||||||
),
|
),
|
||||||
anImage(id = UniqueId("3")),
|
aMediaItemImage(id = UniqueId("3")),
|
||||||
aVideo(id = UniqueId("4")),
|
aMediaItemVideo(id = UniqueId("4")),
|
||||||
anImage(id = UniqueId("5")),
|
aMediaItemImage(id = UniqueId("5")),
|
||||||
anImage(id = UniqueId("6")),
|
aMediaItemImage(id = UniqueId("6")),
|
||||||
anImage(id = UniqueId("7")),
|
aMediaItemImage(id = UniqueId("7")),
|
||||||
anImage(id = UniqueId("8")),
|
aMediaItemImage(id = UniqueId("8")),
|
||||||
anImage(id = UniqueId("9")),
|
aMediaItemImage(id = UniqueId("9")),
|
||||||
|
aMediaItemLoadingIndicator(),
|
||||||
).toImmutableList()
|
).toImmutableList()
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
@ -54,15 +56,14 @@ open class MediaGalleryStateProvider : PreviewParameterProvider<MediaGalleryStat
|
||||||
aGroupedMediaItems(
|
aGroupedMediaItems(
|
||||||
fileItems = listOf(
|
fileItems = listOf(
|
||||||
aDate(id = UniqueId("0")),
|
aDate(id = UniqueId("0")),
|
||||||
aFile(id = UniqueId("1")),
|
aMediaItemFile(id = UniqueId("1")),
|
||||||
aDate(
|
aDate(
|
||||||
id = UniqueId("2"),
|
id = UniqueId("2"),
|
||||||
formattedDate = "September 2004",
|
formattedDate = "September 2004",
|
||||||
),
|
),
|
||||||
aFile(id = UniqueId("3")),
|
aMediaItemFile(id = UniqueId("3")),
|
||||||
aFile(id = UniqueId("4")),
|
aMediaItemFile(id = UniqueId("4")),
|
||||||
aFile(id = UniqueId("5")),
|
aMediaItemLoadingIndicator(),
|
||||||
aFile(id = UniqueId("6")),
|
|
||||||
).toImmutableList()
|
).toImmutableList()
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -302,9 +302,7 @@ private fun MediaGalleryImageGrid(
|
||||||
when (item) {
|
when (item) {
|
||||||
is MediaItem.LoadingIndicator,
|
is MediaItem.LoadingIndicator,
|
||||||
is MediaItem.DateSeparator -> GridItemSpan(columns)
|
is MediaItem.DateSeparator -> GridItemSpan(columns)
|
||||||
is MediaItem.Image,
|
is MediaItem.Event -> GridItemSpan(1)
|
||||||
is MediaItem.Video,
|
|
||||||
is MediaItem.File -> GridItemSpan(1)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
key = { it.id() },
|
key = { it.id() },
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ fun ImageItemView(
|
||||||
@Composable
|
@Composable
|
||||||
internal fun ImageItemViewPreview() = ElementPreview {
|
internal fun ImageItemViewPreview() = ElementPreview {
|
||||||
ImageItemView(
|
ImageItemView(
|
||||||
image = anImage(),
|
image = aMediaItemImage(),
|
||||||
onClick = {},
|
onClick = {},
|
||||||
onLongClick = {},
|
onLongClick = {},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,18 +17,18 @@ import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
|
||||||
class MediaItemFileProvider : PreviewParameterProvider<MediaItem.File> {
|
class MediaItemFileProvider : PreviewParameterProvider<MediaItem.File> {
|
||||||
override val values: Sequence<MediaItem.File>
|
override val values: Sequence<MediaItem.File>
|
||||||
get() = sequenceOf(
|
get() = sequenceOf(
|
||||||
aFile(),
|
aMediaItemFile(),
|
||||||
aFile(
|
aMediaItemFile(
|
||||||
filename = "A long filename that should be truncated.jpg",
|
filename = "A long filename that should be truncated.jpg",
|
||||||
caption = "A caption",
|
caption = "A caption",
|
||||||
),
|
),
|
||||||
aFile(
|
aMediaItemFile(
|
||||||
caption = loremIpsum,
|
caption = loremIpsum,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun aFile(
|
fun aMediaItemFile(
|
||||||
id: UniqueId = UniqueId("fileId"),
|
id: UniqueId = UniqueId("fileId"),
|
||||||
filename: String = "filename",
|
filename: String = "filename",
|
||||||
caption: String? = null,
|
caption: String? = null,
|
||||||
|
|
|
||||||
|
|
@ -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.api.anImageMediaInfo
|
||||||
import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
|
import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
|
||||||
|
|
||||||
fun anImage(
|
fun aMediaItemImage(
|
||||||
id: UniqueId = UniqueId("imageId"),
|
id: UniqueId = UniqueId("imageId"),
|
||||||
eventId: EventId? = null,
|
eventId: EventId? = null,
|
||||||
senderId: UserId? = null,
|
senderId: UserId? = null,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -16,14 +16,14 @@ import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem
|
||||||
class MediaItemVideoProvider : PreviewParameterProvider<MediaItem.Video> {
|
class MediaItemVideoProvider : PreviewParameterProvider<MediaItem.Video> {
|
||||||
override val values: Sequence<MediaItem.Video>
|
override val values: Sequence<MediaItem.Video>
|
||||||
get() = sequenceOf(
|
get() = sequenceOf(
|
||||||
aVideo(),
|
aMediaItemVideo(),
|
||||||
aVideo(
|
aMediaItemVideo(
|
||||||
duration = null,
|
duration = null,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun aVideo(
|
fun aMediaItemVideo(
|
||||||
id: UniqueId = UniqueId("videoId"),
|
id: UniqueId = UniqueId("videoId"),
|
||||||
mediaSource: MediaSource = MediaSource(""),
|
mediaSource: MediaSource = MediaSource(""),
|
||||||
duration: String? = "1:23",
|
duration: String? = "1:23",
|
||||||
|
|
|
||||||
|
|
@ -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.room.FakeMatrixRoom
|
||||||
import io.element.android.libraries.matrix.test.timeline.FakeTimeline
|
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.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.FakeLocalMediaActions
|
||||||
import io.element.android.libraries.mediaviewer.test.FakeLocalMediaFactory
|
import io.element.android.libraries.mediaviewer.test.FakeLocalMediaFactory
|
||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
|
|
@ -119,7 +119,7 @@ class MediaGalleryPresenterTest {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
assertThat(initialState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||||
val item = anImage(
|
val item = aMediaItemImage(
|
||||||
eventId = AN_EVENT_ID,
|
eventId = AN_EVENT_ID,
|
||||||
senderId = A_USER_ID,
|
senderId = A_USER_ID,
|
||||||
)
|
)
|
||||||
|
|
@ -163,7 +163,7 @@ class MediaGalleryPresenterTest {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
assertThat(initialState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||||
val item = anImage(
|
val item = aMediaItemImage(
|
||||||
eventId = AN_EVENT_ID,
|
eventId = AN_EVENT_ID,
|
||||||
senderId = A_USER_ID_2,
|
senderId = A_USER_ID_2,
|
||||||
)
|
)
|
||||||
|
|
@ -196,7 +196,7 @@ class MediaGalleryPresenterTest {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
// Delete bottom sheet
|
// Delete bottom sheet
|
||||||
val item = anImage()
|
val item = aMediaItemImage()
|
||||||
initialState.eventSink(MediaGalleryEvents.ConfirmDelete(AN_EVENT_ID, item.mediaInfo, item.thumbnailSource))
|
initialState.eventSink(MediaGalleryEvents.ConfirmDelete(AN_EVENT_ID, item.mediaInfo, item.thumbnailSource))
|
||||||
val deleteState = awaitItem()
|
val deleteState = awaitItem()
|
||||||
assertThat(deleteState.mediaBottomSheetState).isEqualTo(
|
assertThat(deleteState.mediaBottomSheetState).isEqualTo(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue