Restore fun interface for a sweeter code.

This commit is contained in:
Benoit Marty 2024-10-16 17:12:46 +02:00
parent 70c643be5e
commit 0db54df877
10 changed files with 31 additions and 53 deletions

View file

@ -30,7 +30,6 @@ import io.element.android.libraries.matrix.api.core.TransactionId
import io.element.android.libraries.matrix.api.core.UniqueId
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
import io.element.android.libraries.matrix.api.timeline.item.event.LazyTimelineItemProvider
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails
@ -167,10 +166,8 @@ internal fun aTimelineItemEvent(
inReplyTo = inReplyTo,
isThreaded = isThreaded,
origin = null,
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
override fun getTimelineItemDebugInfo(): TimelineItemDebugInfo = debugInfo
override fun getShield(strict: Boolean): MessageShield? = messageShield
}
timelineItemDebugInfoProvider = { debugInfo },
messageShieldProvider = { messageShield },
)
}

View file

@ -17,7 +17,6 @@ import io.element.android.features.messages.impl.timeline.model.event.aTimelineI
import io.element.android.features.messages.impl.timeline.protection.aTimelineProtectionState
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.matrix.api.timeline.item.event.LazyTimelineItemProvider
import kotlinx.collections.immutable.toImmutableList
@PreviewsDayNight
@ -28,10 +27,7 @@ internal fun TimelineViewMessageShieldPreview() = ElementPreview {
val messageShield = aCriticalShield()
val items = listOf(
(timelineItems.first() as TimelineItem.Event).copy(
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
override fun getTimelineItemDebugInfo() = aTimelineItemDebugInfo()
override fun getShield(strict: Boolean) = messageShield
}
messageShieldProvider = { messageShield },
)
) + timelineItems.drop(1)
CompositionLocalProvider(

View file

@ -86,7 +86,8 @@ class TimelineItemEventFactory @AssistedInject constructor(
inReplyTo = currentTimelineItem.event.inReplyTo()?.map(permalinkParser = permalinkParser),
isThreaded = currentTimelineItem.event.isThreaded(),
origin = currentTimelineItem.event.origin,
lazyTimelineItemProvider = currentTimelineItem.event.lazyTimelineItemProvider,
timelineItemDebugInfoProvider = currentTimelineItem.event.timelineItemDebugInfoProvider,
messageShieldProvider = currentTimelineItem.event.messageShieldProvider,
)
}

View file

@ -18,10 +18,11 @@ import io.element.android.libraries.matrix.api.core.TransactionId
import io.element.android.libraries.matrix.api.core.UniqueId
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
import io.element.android.libraries.matrix.api.timeline.item.event.LazyTimelineItemProvider
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShieldProvider
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
import io.element.android.libraries.matrix.api.timeline.item.event.TimelineItemDebugInfoProvider
import io.element.android.libraries.matrix.api.timeline.item.event.TimelineItemEventOrigin
import io.element.android.libraries.matrix.api.timeline.item.event.getDisambiguatedDisplayName
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails
@ -76,7 +77,8 @@ sealed interface TimelineItem {
val inReplyTo: InReplyToDetails?,
val isThreaded: Boolean,
val origin: TimelineItemEventOrigin?,
val lazyTimelineItemProvider: LazyTimelineItemProvider,
val timelineItemDebugInfoProvider: TimelineItemDebugInfoProvider,
val messageShieldProvider: MessageShieldProvider,
) : TimelineItem {
val showSenderInformation = groupPosition.isNew() && !isMine
@ -91,10 +93,10 @@ sealed interface TimelineItem {
val isRemote = eventId != null
// No need to be lazy here?
val messageShield: MessageShield? = lazyTimelineItemProvider.getShield(strict = false)
val messageShield: MessageShield? = messageShieldProvider(strict = false)
val debugInfo: TimelineItemDebugInfo
get() = lazyTimelineItemProvider.getTimelineItemDebugInfo()
get() = timelineItemDebugInfoProvider()
}
@Immutable

View file

@ -20,7 +20,6 @@ import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.TransactionId
import io.element.android.libraries.matrix.api.core.UniqueId
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
import io.element.android.libraries.matrix.api.timeline.item.event.LazyTimelineItemProvider
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
import io.element.android.libraries.matrix.test.AN_EVENT_ID
@ -61,8 +60,6 @@ internal fun aMessageEvent(
inReplyTo = inReplyTo,
isThreaded = isThreaded,
origin = null,
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
override fun getTimelineItemDebugInfo() = debugInfo
override fun getShield(strict: Boolean) = messageShield
},
timelineItemDebugInfoProvider = { debugInfo },
messageShieldProvider = { messageShield },
)

View file

@ -18,7 +18,6 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt
import io.element.android.features.messages.impl.timeline.model.virtual.aTimelineItemDaySeparatorModel
import io.element.android.libraries.designsystem.components.avatar.anAvatarData
import io.element.android.libraries.matrix.api.core.UniqueId
import io.element.android.libraries.matrix.api.timeline.item.event.LazyTimelineItemProvider
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
import io.element.android.libraries.matrix.test.AN_EVENT_ID
import io.element.android.libraries.matrix.test.A_USER_ID
@ -43,10 +42,8 @@ class TimelineItemGrouperTest {
inReplyTo = null,
isThreaded = false,
origin = null,
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
override fun getTimelineItemDebugInfo() = aTimelineItemDebugInfo()
override fun getShield(strict: Boolean) = null
},
timelineItemDebugInfoProvider = { aTimelineItemDebugInfo() },
messageShieldProvider = { null },
)
private val aNonGroupableItem = aMessageEvent()
private val aNonGroupableItemNoEvent = TimelineItem.Virtual(UniqueId("virtual"), aTimelineItemDaySeparatorModel("Today"))

View file

@ -14,7 +14,6 @@ import io.element.android.libraries.matrix.api.core.UniqueId
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
import io.element.android.libraries.matrix.api.timeline.item.event.LazyTimelineItemProvider
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent
import io.element.android.libraries.matrix.test.AN_EVENT_ID
@ -89,15 +88,14 @@ fun aRedactedMatrixTimeline(eventId: EventId) = listOf<MatrixTimelineItem>(
timestamp = 9442,
content = RedactedContent,
origin = null,
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
override fun getTimelineItemDebugInfo() = TimelineItemDebugInfo(
timelineItemDebugInfoProvider = {
TimelineItemDebugInfo(
model = "enim",
originalJson = null,
latestEditedJson = null
latestEditedJson = null,
)
override fun getShield(strict: Boolean) = null
},
messageShieldProvider = { null },
),
)
)