From b3648c1d182152d07b1e2c7f9ccc6c7fa176f8d3 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 10 Dec 2024 13:10:25 +0100 Subject: [PATCH] Improve preview. --- .../impl/gallery/MediaGalleryStateProvider.kt | 33 ++++++++++--------- .../impl/gallery/MediaGalleryView.kt | 4 +-- .../impl/gallery/ui/ImageItemView.kt | 2 +- .../impl/gallery/ui/MediaItemFileProvider.kt | 8 ++--- .../impl/gallery/ui/MediaItemImageProvider.kt | 2 +- .../ui/MediaItemLoadingIndicatorProvider.kt | 22 +++++++++++++ .../impl/gallery/ui/MediaItemVideoProvider.kt | 6 ++-- .../impl/gallery/MediaGalleryPresenterTest.kt | 8 ++--- 8 files changed, 53 insertions(+), 32 deletions(-) create mode 100644 libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemLoadingIndicatorProvider.kt diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryStateProvider.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryStateProvider.kt index 55fffa2a9c..81b34020f5 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryStateProvider.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryStateProvider.kt @@ -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 { @@ -29,18 +30,19 @@ open class MediaGalleryStateProvider : PreviewParameterProvider GridItemSpan(columns) - is MediaItem.Image, - is MediaItem.Video, - is MediaItem.File -> GridItemSpan(1) + is MediaItem.Event -> GridItemSpan(1) } }, key = { it.id() }, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/ImageItemView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/ImageItemView.kt index 892b22a951..f92a29c1ae 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/ImageItemView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/ImageItemView.kt @@ -67,7 +67,7 @@ fun ImageItemView( @Composable internal fun ImageItemViewPreview() = ElementPreview { ImageItemView( - image = anImage(), + image = aMediaItemImage(), onClick = {}, onLongClick = {}, ) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemFileProvider.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemFileProvider.kt index f5197e590d..f5374cbbc2 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemFileProvider.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemFileProvider.kt @@ -17,18 +17,18 @@ import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem class MediaItemFileProvider : PreviewParameterProvider { override val values: Sequence 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, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemImageProvider.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemImageProvider.kt index a87983831c..a422fc715b 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemImageProvider.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemImageProvider.kt @@ -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, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemLoadingIndicatorProvider.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemLoadingIndicatorProvider.kt new file mode 100644 index 0000000000..d9323e5979 --- /dev/null +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemLoadingIndicatorProvider.kt @@ -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, + ) +} diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemVideoProvider.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemVideoProvider.kt index 1db99c7e31..1cc223b347 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemVideoProvider.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/MediaItemVideoProvider.kt @@ -16,14 +16,14 @@ import io.element.android.libraries.mediaviewer.impl.gallery.MediaItem class MediaItemVideoProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( - aVideo(), - aVideo( + aMediaItemVideo(), + aMediaItemVideo( duration = null, ), ) } -fun aVideo( +fun aMediaItemVideo( id: UniqueId = UniqueId("videoId"), mediaSource: MediaSource = MediaSource(""), duration: String? = "1:23", diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt index 8867b8ebc3..a5fe335fd3 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt @@ -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(