From e9a9e79b40458a8ecefd9f607a53ea1bcc9b0bcc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Jan 2025 11:33:07 +0100 Subject: [PATCH] Cleanup --- .../mediaviewer/api/MediaViewerEntryPoint.kt | 1 - .../impl/gallery/MediaGalleryDataSource.kt | 4 +- .../impl/gallery/MediaGalleryState.kt | 7 +++ .../impl/gallery/MediaGalleryView.kt | 5 +- .../mediaviewer/impl/gallery/MediaTimeline.kt | 59 +++++++------------ .../impl/viewer/MediaViewerState.kt | 8 --- .../tests/konsist/KonsistClassNameTest.kt | 1 + 7 files changed, 31 insertions(+), 54 deletions(-) diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt index bbcd931410..a824fc5540 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt @@ -39,7 +39,6 @@ interface MediaViewerEntryPoint : FeatureEntryPoint { val canShowInfo: Boolean, ) : NodeInputs - // TODO convert to sealed class and add eventId to the 2nd and 3rd items enum class MediaViewerMode { SingleMedia, TimelineImagesAndVideos, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryDataSource.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryDataSource.kt index 204f140eda..3cf6823fd7 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryDataSource.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryDataSource.kt @@ -50,7 +50,7 @@ class TimelineMediaGalleryDataSource @Inject constructor( override fun groupedMediaItemsFlow(): Flow> = groupedMediaItemsFlow override fun getLastData(): AsyncData = groupedMediaItemsFlow.replayCache.firstOrNull() - ?: mediaTimeline.getCache()?.let { AsyncData.Success(it) } + ?: mediaTimeline.cache?.let { AsyncData.Success(it) } ?: AsyncData.Uninitialized private val isStarted = AtomicBoolean(false) @@ -61,7 +61,7 @@ class TimelineMediaGalleryDataSource @Inject constructor( return } flow { - val cache = mediaTimeline.getCache() + val cache = mediaTimeline.cache if (cache != null) { groupedMediaItemsFlow.emit(AsyncData.Success(cache)) } else { diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryState.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryState.kt index 750dbe1038..2cb3b40b9b 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryState.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryState.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.mediaviewer.impl.gallery import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.mediaviewer.impl.R import io.element.android.libraries.mediaviewer.impl.details.MediaBottomSheetState import kotlinx.collections.immutable.ImmutableList @@ -34,6 +35,12 @@ data class GroupedMediaItems( } } +fun GroupedMediaItems.hasEvent(eventId: EventId): Boolean { + return (fileItems + imageAndVideoItems) + .filterIsInstance() + .any { it.eventId() == eventId } +} + enum class MediaGalleryMode(val stringResource: Int) { Images(R.string.screen_media_browser_list_mode_media), Files(R.string.screen_media_browser_list_mode_files), diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt index 3eb5281c43..38712c3ea3 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt @@ -440,10 +440,7 @@ private fun LoadingMoreIndicator( } val latestEventSink by rememberUpdatedState(eventSink) LaunchedEffect(item.timestamp) { - // TODO Add isFake to the model instead of using -1 for timestamp - if (item.timestamp != -1L) { - latestEventSink(MediaGalleryEvents.LoadMore(item.direction)) - } + latestEventSink(MediaGalleryEvents.LoadMore(item.direction)) } } } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaTimeline.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaTimeline.kt index 521f585202..eba170f473 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaTimeline.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaTimeline.kt @@ -19,7 +19,7 @@ import javax.inject.Inject interface MediaTimeline { suspend fun getTimeline(): Result - fun getCache(): GroupedMediaItems? + val cache: GroupedMediaItems? fun orCache(data: GroupedMediaItems): GroupedMediaItems } @@ -51,7 +51,7 @@ class LiveMediaTimeline @Inject constructor( } // No cache for LiveMediaTimeline - override fun getCache(): GroupedMediaItems? = null + override val cache = null override fun orCache(data: GroupedMediaItems) = data } @@ -61,41 +61,28 @@ class LiveMediaTimeline @Inject constructor( class FocusedMediaTimeline( private val room: MatrixRoom, private val eventId: EventId, - private val initialMediaItem: MediaItem.Event, + initialMediaItem: MediaItem.Event, ) : MediaTimeline { override suspend fun getTimeline(): Result { return room.mediaTimeline(eventId) } - override fun getCache(): GroupedMediaItems { - // TODO Cleanup - return GroupedMediaItems( - fileItems = persistentListOf( - MediaItem.LoadingIndicator( - id = UniqueId("loading_forwards"), - direction = Timeline.PaginationDirection.FORWARDS, - timestamp = -1L, - ), - initialMediaItem, - MediaItem.LoadingIndicator( - id = UniqueId("loading_backwards"), - direction = Timeline.PaginationDirection.BACKWARDS, - timestamp = -1L, - ), - ), - imageAndVideoItems = persistentListOf( - MediaItem.LoadingIndicator( - id = UniqueId("loading_forwards"), - direction = Timeline.PaginationDirection.FORWARDS, - timestamp = -1L, - ), - initialMediaItem, - MediaItem.LoadingIndicator( - id = UniqueId("loading_backwards"), - direction = Timeline.PaginationDirection.BACKWARDS, - timestamp = -1L, - ), - ), + override val cache = persistentListOf( + MediaItem.LoadingIndicator( + id = UniqueId("loading_forwards"), + direction = Timeline.PaginationDirection.FORWARDS, + timestamp = 0L, + ), + initialMediaItem, + MediaItem.LoadingIndicator( + id = UniqueId("loading_backwards"), + direction = Timeline.PaginationDirection.BACKWARDS, + timestamp = 0L, + ), + ).let { + GroupedMediaItems( + fileItems = it, + imageAndVideoItems = it, ) } @@ -103,13 +90,7 @@ class FocusedMediaTimeline( return if (data.hasEvent(eventId)) { data } else { - getCache() + cache } } } - -fun GroupedMediaItems.hasEvent(eventId: EventId): Boolean { - return (fileItems + imageAndVideoItems) - .filterIsInstance() - .any { it.eventId() == eventId } -} diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerState.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerState.kt index 4eeda0c352..32c22b0470 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerState.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerState.kt @@ -50,11 +50,3 @@ sealed interface MediaViewerPageData { override val pagerKey: Long, ) : MediaViewerPageData } - -fun MediaViewerPageData.toKey(): String { - return when (this) { - is MediaViewerPageData.Failure -> "Failure" - is MediaViewerPageData.Loading -> "Loading_${direction}" - is MediaViewerPageData.MediaViewerData -> eventId?.value ?: mediaSource.url - } -} diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt index d140d3fea4..b5e75b904d 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt @@ -136,6 +136,7 @@ class KonsistClassNameTest { "Enterprise", "Fdroid", "FileExtensionExtractor", + "LiveMediaTimeline", "KeyStore", "Matrix", "Noop",