From 7eddf1201a32c29a3f6fa7e885d7815f4402fd5f Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 24 Apr 2023 10:42:27 +0200 Subject: [PATCH] Timeline: add ContentType instead of using introspection. --- .../features/messages/impl/timeline/TimelineView.kt | 11 ----------- .../messages/impl/timeline/diff/CacheInvalidator.kt | 8 ++++---- .../messages/impl/timeline/model/TimelineItem.kt | 5 +++++ .../timeline/model/event/TimelineItemEmoteContent.kt | 4 +++- .../model/event/TimelineItemEncryptedContent.kt | 4 +++- .../timeline/model/event/TimelineItemEventContent.kt | 4 +++- .../timeline/model/event/TimelineItemImageContent.kt | 4 +++- .../timeline/model/event/TimelineItemNoticeContent.kt | 4 +++- .../model/event/TimelineItemRedactedContent.kt | 4 +++- .../timeline/model/event/TimelineItemTextContent.kt | 4 +++- .../model/event/TimelineItemUnknownContent.kt | 4 +++- .../model/virtual/TimelineItemDaySeparatorModel.kt | 4 +++- .../model/virtual/TimelineItemLoadingModel.kt | 4 +++- .../model/virtual/TimelineItemReadMarkerModel.kt | 4 +++- .../model/virtual/TimelineItemTimelineStartModel.kt | 4 +++- .../model/virtual/TimelineItemUnknownVirtualModel.kt | 4 +++- .../model/virtual/TimelineItemVirtualModel.kt | 4 +++- 17 files changed, 51 insertions(+), 29 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt index c7b071e069..a378c508f6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt @@ -75,7 +75,6 @@ import io.element.android.libraries.designsystem.theme.components.Text import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch -import timber.log.Timber @Composable fun TimelineView( @@ -115,24 +114,14 @@ fun TimelineView( } } - /* TimelineScrollHelper( lazyListState = lazyListState, timelineItems = state.timelineItems, onLoadMore = ::onReachedLoadMore ) - - */ } } -private fun TimelineItem.contentType() = when (this) { - is TimelineItem.Event -> content.javaClass.simpleName - is TimelineItem.Virtual -> model.javaClass.simpleName -}.also { - Timber.v("ContentType = $it") -} - @Composable fun TimelineItemRow( timelineItem: TimelineItem, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/diff/CacheInvalidator.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/diff/CacheInvalidator.kt index c2f3b33667..9aa3ab5e02 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/diff/CacheInvalidator.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/diff/CacheInvalidator.kt @@ -25,7 +25,7 @@ internal class CacheInvalidator(private val itemStatesCache: MutableList id } + fun contentType(): String = when (this) { + is Event -> content.type + is Virtual -> model.type + } + @Immutable data class Virtual( val id: String, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEmoteContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEmoteContent.kt index 67fefb665e..a059c9b275 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEmoteContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEmoteContent.kt @@ -21,4 +21,6 @@ import org.jsoup.nodes.Document data class TimelineItemEmoteContent( override val body: String, override val htmlDocument: Document? -) : TimelineItemTextBasedContent +) : TimelineItemTextBasedContent { + override val type: String = "TimelineItemEmoteContent" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEncryptedContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEncryptedContent.kt index b42c2ac535..ff1bb36faf 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEncryptedContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEncryptedContent.kt @@ -20,4 +20,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecry data class TimelineItemEncryptedContent( val data: UnableToDecryptContent.Data -) : TimelineItemEventContent +) : TimelineItemEventContent { + override val type: String = "TimelineItemEncryptedContent" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContent.kt index 7e166dba97..233f51a5a2 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContent.kt @@ -19,4 +19,6 @@ package io.element.android.features.messages.impl.timeline.model.event import androidx.compose.runtime.Immutable @Immutable -sealed interface TimelineItemEventContent +sealed interface TimelineItemEventContent { + val type: String +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemImageContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemImageContent.kt index 8013ca8a65..1d2367d13f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemImageContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemImageContent.kt @@ -23,4 +23,6 @@ data class TimelineItemImageContent( val imageMeta: MediaResolver.Meta, val blurhash: String?, val aspectRatio: Float -) : TimelineItemEventContent +) : TimelineItemEventContent{ + override val type: String = "TimelineItemImageContent" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemNoticeContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemNoticeContent.kt index 6c647158c4..7974f188a3 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemNoticeContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemNoticeContent.kt @@ -21,4 +21,6 @@ import org.jsoup.nodes.Document data class TimelineItemNoticeContent( override val body: String, override val htmlDocument: Document? -) : TimelineItemTextBasedContent +) : TimelineItemTextBasedContent { + override val type: String = "TimelineItemNoticeContent" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemRedactedContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemRedactedContent.kt index de98b22bbb..7a8edae953 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemRedactedContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemRedactedContent.kt @@ -16,4 +16,6 @@ package io.element.android.features.messages.impl.timeline.model.event -object TimelineItemRedactedContent : TimelineItemEventContent +object TimelineItemRedactedContent : TimelineItemEventContent{ + override val type: String = "TimelineItemRedactedContent" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemTextContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemTextContent.kt index 6cbb0ccd08..993275e627 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemTextContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemTextContent.kt @@ -21,4 +21,6 @@ import org.jsoup.nodes.Document data class TimelineItemTextContent( override val body: String, override val htmlDocument: Document? -) : TimelineItemTextBasedContent +) : TimelineItemTextBasedContent{ + override val type: String = "TimelineItemTextContent" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemUnknownContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemUnknownContent.kt index eb79b29f79..44aeb93e3b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemUnknownContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemUnknownContent.kt @@ -16,4 +16,6 @@ package io.element.android.features.messages.impl.timeline.model.event -object TimelineItemUnknownContent : TimelineItemEventContent +object TimelineItemUnknownContent : TimelineItemEventContent { + override val type: String = "TimelineItemUnknownContent" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemDaySeparatorModel.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemDaySeparatorModel.kt index b4c1235f8f..54e95b7294 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemDaySeparatorModel.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemDaySeparatorModel.kt @@ -18,4 +18,6 @@ package io.element.android.features.messages.impl.timeline.model.virtual data class TimelineItemDaySeparatorModel( val formattedDate: String -) : TimelineItemVirtualModel +) : TimelineItemVirtualModel { + override val type: String = "TimelineItemDaySeparatorModel" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemLoadingModel.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemLoadingModel.kt index 4870177a84..9cc7280b07 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemLoadingModel.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemLoadingModel.kt @@ -16,4 +16,6 @@ package io.element.android.features.messages.impl.timeline.model.virtual -object TimelineItemLoadingModel : TimelineItemVirtualModel +object TimelineItemLoadingModel : TimelineItemVirtualModel { + override val type: String = "TimelineItemLoadingModel" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemReadMarkerModel.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemReadMarkerModel.kt index 247cd58212..0b8e3fc0e5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemReadMarkerModel.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemReadMarkerModel.kt @@ -16,4 +16,6 @@ package io.element.android.features.messages.impl.timeline.model.virtual -object TimelineItemReadMarkerModel : TimelineItemVirtualModel +object TimelineItemReadMarkerModel : TimelineItemVirtualModel { + override val type: String = "TimelineItemReadMarkerModel" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemTimelineStartModel.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemTimelineStartModel.kt index ab0ec4fdf8..8c1afea886 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemTimelineStartModel.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemTimelineStartModel.kt @@ -16,4 +16,6 @@ package io.element.android.features.messages.impl.timeline.model.virtual -object TimelineItemTimelineStartModel : TimelineItemVirtualModel +object TimelineItemTimelineStartModel : TimelineItemVirtualModel { + override val type: String = "TimelineItemTimelineStartModel" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemUnknownVirtualModel.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemUnknownVirtualModel.kt index 6d023bf748..8b4fe44744 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemUnknownVirtualModel.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemUnknownVirtualModel.kt @@ -16,4 +16,6 @@ package io.element.android.features.messages.impl.timeline.model.virtual -object TimelineItemUnknownVirtualModel : TimelineItemVirtualModel +object TimelineItemUnknownVirtualModel : TimelineItemVirtualModel { + override val type: String = "TimelineItemUnknownVirtualModel" +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemVirtualModel.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemVirtualModel.kt index a7911867f9..d6c3529ab4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemVirtualModel.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/virtual/TimelineItemVirtualModel.kt @@ -19,4 +19,6 @@ package io.element.android.features.messages.impl.timeline.model.virtual import androidx.compose.runtime.Immutable @Immutable -sealed interface TimelineItemVirtualModel +sealed interface TimelineItemVirtualModel { + val type: String +}