diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListStateProvider.kt index 4f92bc72ba..78e65c839a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListStateProvider.kt @@ -31,103 +31,109 @@ open class ActionListStateProvider : PreviewParameterProvider { return sequenceOf( anActionListState(), anActionListState().copy(target = ActionListState.Target.Loading(aTimelineItemEvent())), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent().copy( - reactionsState = reactionsState + event = aTimelineItemEvent( + timelineItemReactions = reactionsState ), displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), ) ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( event = aTimelineItemEvent( content = aTimelineItemImageContent(), displayNameAmbiguous = true, - ).copy( - reactionsState = reactionsState, + timelineItemReactions = reactionsState, ), displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), ) ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent(content = aTimelineItemVideoContent()).copy( - reactionsState = reactionsState + event = aTimelineItemEvent( + content = aTimelineItemVideoContent(), + timelineItemReactions = reactionsState ), displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), ) ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent(content = aTimelineItemFileContent()).copy( - reactionsState = reactionsState + event = aTimelineItemEvent( + content = aTimelineItemFileContent(), + timelineItemReactions = reactionsState ), displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), ) ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent(content = aTimelineItemAudioContent()).copy( - reactionsState = reactionsState + event = aTimelineItemEvent( + content = aTimelineItemAudioContent(), + timelineItemReactions = reactionsState ), displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), ) ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent(content = aTimelineItemVoiceContent()).copy( - reactionsState = reactionsState + event = aTimelineItemEvent( + content = aTimelineItemVoiceContent(), + timelineItemReactions = reactionsState ), displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), ) ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent(content = aTimelineItemLocationContent()).copy( - reactionsState = reactionsState + event = aTimelineItemEvent( + content = aTimelineItemLocationContent(), + timelineItemReactions = reactionsState ), displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), ) ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent(content = aTimelineItemLocationContent()).copy( - reactionsState = reactionsState + event = aTimelineItemEvent( + content = aTimelineItemLocationContent(), + timelineItemReactions = reactionsState ), displayEmojiReactions = false, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), ), ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent(content = aTimelineItemPollContent()).copy( - reactionsState = reactionsState + event = aTimelineItemEvent( + content = aTimelineItemPollContent(), + timelineItemReactions = reactionsState ), displayEmojiReactions = false, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemPollActionList(), ), ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( - event = aTimelineItemEvent().copy( - reactionsState = reactionsState, + event = aTimelineItemEvent( + timelineItemReactions = reactionsState, messageShield = MessageShield.UnknownDevice(isCritical = true) ), displayEmojiReactions = true, @@ -135,7 +141,7 @@ open class ActionListStateProvider : PreviewParameterProvider { actions = aTimelineItemActionList(), ) ), - anActionListState().copy( + anActionListState( target = ActionListState.Target.Success( event = aTimelineItemEvent(), displayEmojiReactions = true, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt index fb96e75e28..cecc528cee 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt @@ -30,6 +30,7 @@ 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 @@ -164,10 +165,12 @@ internal fun aTimelineItemEvent( groupPosition = groupPosition, localSendState = sendState, inReplyTo = inReplyTo, - debugInfoProvider = { debugInfo }, isThreaded = isThreaded, origin = null, - messageShield = messageShield, + lazyTimelineItemProvider = object : LazyTimelineItemProvider { + override fun getTimelineItemDebugInfo(): TimelineItemDebugInfo = debugInfo + override fun getShield(strict: Boolean): MessageShield? = messageShield + } ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineViewMessageShieldPreview.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineViewMessageShieldPreview.kt index 806a81b7fe..ddbc98c638 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineViewMessageShieldPreview.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineViewMessageShieldPreview.kt @@ -17,6 +17,7 @@ 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 @@ -26,7 +27,12 @@ internal fun TimelineViewMessageShieldPreview() = ElementPreview { // For consistency, ensure that there is a message in the timeline (the last one) with an error. val messageShield = aCriticalShield() val items = listOf( - (timelineItems.first() as TimelineItem.Event).copy(messageShield = messageShield) + (timelineItems.first() as TimelineItem.Event).copy( + lazyTimelineItemProvider = object : LazyTimelineItemProvider { + override fun getTimelineItemDebugInfo() = aTimelineItemDebugInfo() + override fun getShield(strict: Boolean) = messageShield + } + ) ) + timelineItems.drop(1) CompositionLocalProvider( LocalTimelineItemPresenterFactories provides aFakeTimelineItemPresenterFactories(), diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt index 3fe24fbef0..df0dfb41bf 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt @@ -27,10 +27,10 @@ class TimelineItemEventForTimestampViewProvider : PreviewParameterProvider().toImmutableList()), localSendState = sendState, inReplyTo = inReplyTo, - debugInfoProvider = { debugInfo }, isThreaded = isThreaded, origin = null, - messageShield = messageShield, + lazyTimelineItemProvider = object : LazyTimelineItemProvider { + override fun getTimelineItemDebugInfo() = debugInfo + override fun getShield(strict: Boolean) = messageShield + }, ) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouperTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouperTest.kt index 2e37145ff8..2b76ab6a90 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouperTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/groups/TimelineItemGrouperTest.kt @@ -18,6 +18,7 @@ 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 @@ -41,9 +42,11 @@ class TimelineItemGrouperTest { canBeRepliedTo = false, inReplyTo = null, isThreaded = false, - debugInfoProvider = { aTimelineItemDebugInfo() }, origin = null, - messageShield = null, + lazyTimelineItemProvider = object : LazyTimelineItemProvider { + override fun getTimelineItemDebugInfo() = aTimelineItemDebugInfo() + override fun getShield(strict: Boolean) = null + }, ) private val aNonGroupableItem = aMessageEvent() private val aNonGroupableItemNoEvent = TimelineItem.Virtual(UniqueId("virtual"), aTimelineItemDaySeparatorModel("Today")) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/RedactedVoiceMessageManagerTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/RedactedVoiceMessageManagerTest.kt index b9b08ab6d4..d778b488c9 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/RedactedVoiceMessageManagerTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/RedactedVoiceMessageManagerTest.kt @@ -14,6 +14,7 @@ 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 @@ -88,15 +89,16 @@ fun aRedactedMatrixTimeline(eventId: EventId) = listOf( senderProfile = ProfileTimelineDetails.Unavailable, timestamp = 9442, content = RedactedContent, - debugInfoProvider = { - TimelineItemDebugInfo( + origin = null, + lazyTimelineItemProvider = object : LazyTimelineItemProvider { + override fun getTimelineItemDebugInfo() = TimelineItemDebugInfo( model = "enim", originalJson = null, latestEditedJson = null ) + + override fun getShield(strict: Boolean) = null }, - origin = null, - messageShieldProvider = { null }, ), ) ) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventTimelineItem.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventTimelineItem.kt index b311b4e6bf..7b7d876bb7 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventTimelineItem.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventTimelineItem.kt @@ -28,9 +28,8 @@ data class EventTimelineItem( val senderProfile: ProfileTimelineDetails, val timestamp: Long, val content: EventContent, - val debugInfoProvider: EventDebugInfoProvider, val origin: TimelineItemEventOrigin?, - val messageShieldProvider: EventShieldsProvider, + val lazyTimelineItemProvider: LazyTimelineItemProvider, ) { fun inReplyTo(): InReplyTo? { return (content as? MessageContent)?.inReplyTo @@ -46,10 +45,7 @@ data class EventTimelineItem( } } -fun interface EventDebugInfoProvider { - fun get(): TimelineItemDebugInfo -} - -fun interface EventShieldsProvider { +interface LazyTimelineItemProvider { + fun getTimelineItemDebugInfo(): TimelineItemDebugInfo fun getShield(strict: Boolean): MessageShield? } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt index 1291c9e6b8..6be638faae 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt @@ -12,10 +12,9 @@ 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.UserId import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo -import io.element.android.libraries.matrix.api.timeline.item.event.EventDebugInfoProvider import io.element.android.libraries.matrix.api.timeline.item.event.EventReaction -import io.element.android.libraries.matrix.api.timeline.item.event.EventShieldsProvider 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.LocalEventSendState import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails @@ -27,14 +26,13 @@ import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import org.matrix.rustcomponents.sdk.EventOrTransactionId import org.matrix.rustcomponents.sdk.EventSendState -import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfoProvider import org.matrix.rustcomponents.sdk.Reaction import org.matrix.rustcomponents.sdk.ShieldState import uniffi.matrix_sdk_common.ShieldStateCode import org.matrix.rustcomponents.sdk.EventSendState as RustEventSendState -import org.matrix.rustcomponents.sdk.EventShieldsProvider as RustEventShieldsProvider import org.matrix.rustcomponents.sdk.EventTimelineItem as RustEventTimelineItem import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo as RustEventTimelineItemDebugInfo +import org.matrix.rustcomponents.sdk.LazyTimelineItemProvider as RustLazyTimelineItemProvider import org.matrix.rustcomponents.sdk.ProfileDetails as RustProfileDetails import org.matrix.rustcomponents.sdk.Receipt as RustReceipt import uniffi.matrix_sdk_ui.EventItemOrigin as RustEventItemOrigin @@ -48,7 +46,8 @@ class EventTimelineItemMapper( transactionId = eventOrTransactionId.transactionId(), isEditable = isEditable, canBeRepliedTo = canBeRepliedTo, - isLocal = isLocal, + // TODO Remove this field + isLocal = !isRemote, isOwn = isOwn, isRemote = isRemote, localSendState = localSendState?.map(), @@ -58,9 +57,8 @@ class EventTimelineItemMapper( senderProfile = senderProfile.map(), timestamp = timestamp.toLong(), content = contentMapper.map(content), - debugInfoProvider = RustEventDebugInfoProvider(debugInfoProvider), origin = origin?.map(), - messageShieldProvider = RustEventShieldsProvider(shieldsProvider) + lazyTimelineItemProvider = LazyTimelineItemProviderWrapper(lazyProvider) ) } } @@ -168,15 +166,13 @@ private fun ShieldState?.map(): MessageShield? { } } -class RustEventDebugInfoProvider(private val debugInfoProvider: EventTimelineItemDebugInfoProvider) : EventDebugInfoProvider { - override fun get(): TimelineItemDebugInfo { - return debugInfoProvider.get().map() +class LazyTimelineItemProviderWrapper(private val provider: RustLazyTimelineItemProvider) : LazyTimelineItemProvider { + override fun getTimelineItemDebugInfo(): TimelineItemDebugInfo { + return provider.debugInfo().map() } -} -class RustEventShieldsProvider(private val shieldsProvider: RustEventShieldsProvider) : EventShieldsProvider { override fun getShield(strict: Boolean): MessageShield? { - return shieldsProvider.getShields(strict)?.map() + return provider.getShields(strict)?.map() } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/EventTimelineItem.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/EventTimelineItem.kt index 1b8c7152ff..42e710efc2 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/EventTimelineItem.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/EventTimelineItem.kt @@ -7,8 +7,7 @@ package io.element.android.libraries.matrix.impl.fixtures.factories -import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustEventShieldsProvider -import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustEventTimelineItemDebugInfoProvider +import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustLazyTimelineItemProvider import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_USER_ID import org.matrix.rustcomponents.sdk.EventOrTransactionId @@ -23,7 +22,6 @@ import org.matrix.rustcomponents.sdk.TimelineItemContent import uniffi.matrix_sdk_ui.EventItemOrigin fun aRustEventTimelineItem( - isLocal: Boolean = false, isRemote: Boolean = true, eventOrTransactionId: EventOrTransactionId = EventOrTransactionId.EventId(AN_EVENT_ID.value), sender: String = A_USER_ID.value, @@ -40,7 +38,6 @@ fun aRustEventTimelineItem( canBeRepliedTo: Boolean = true, shieldsState: ShieldState? = null, ) = EventTimelineItem( - isLocal = isLocal, isRemote = isRemote, eventOrTransactionId = eventOrTransactionId, sender = sender, @@ -50,10 +47,12 @@ fun aRustEventTimelineItem( isEditable = isEditable, canBeRepliedTo = canBeRepliedTo, content = content, - debugInfoProvider = FakeRustEventTimelineItemDebugInfoProvider(debugInfo), - shieldsProvider = FakeRustEventShieldsProvider(shieldsState), localSendState = localSendState, reactions = reactions, readReceipts = readReceipts, origin = origin, + lazyProvider = FakeRustLazyTimelineItemProvider( + debugInfo = debugInfo, + shieldsState = shieldsState, + ) ) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustEventShieldsProvider.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustEventShieldsProvider.kt deleted file mode 100644 index 93f1e5162b..0000000000 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustEventShieldsProvider.kt +++ /dev/null @@ -1,18 +0,0 @@ -/* - * 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.matrix.impl.fixtures.fakes - -import org.matrix.rustcomponents.sdk.EventShieldsProvider -import org.matrix.rustcomponents.sdk.NoPointer -import org.matrix.rustcomponents.sdk.ShieldState - -class FakeRustEventShieldsProvider( - private val shieldsState: ShieldState? = null, -) : EventShieldsProvider(NoPointer) { - override fun getShields(strict: Boolean): ShieldState? = shieldsState -} diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustEventTimelineItemDebugInfoProvider.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustLazyTimelineItemProvider.kt similarity index 59% rename from libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustEventTimelineItemDebugInfoProvider.kt rename to libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustLazyTimelineItemProvider.kt index 93ac66318b..b133ddd0b1 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustEventTimelineItemDebugInfoProvider.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustLazyTimelineItemProvider.kt @@ -9,11 +9,14 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import io.element.android.libraries.matrix.impl.fixtures.factories.anEventTimelineItemDebugInfo import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo -import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfoProvider +import org.matrix.rustcomponents.sdk.LazyTimelineItemProvider import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.ShieldState -class FakeRustEventTimelineItemDebugInfoProvider( +class FakeRustLazyTimelineItemProvider( private val debugInfo: EventTimelineItemDebugInfo = anEventTimelineItemDebugInfo(), -) : EventTimelineItemDebugInfoProvider(NoPointer) { - override fun get(): EventTimelineItemDebugInfo = debugInfo + private val shieldsState: ShieldState? = null, +) : LazyTimelineItemProvider(NoPointer) { + override fun getShields(strict: Boolean) = shieldsState + override fun debugInfo() = debugInfo } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/TimelineFixture.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/TimelineFixture.kt index 85833f183a..459987a983 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/TimelineFixture.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/TimelineFixture.kt @@ -19,6 +19,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.EventContent import io.element.android.libraries.matrix.api.timeline.item.event.EventReaction import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem import io.element.android.libraries.matrix.api.timeline.item.event.InReplyTo +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.MessageContent import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield @@ -69,9 +70,11 @@ fun anEventTimelineItem( senderProfile = senderProfile, timestamp = timestamp, content = content, - debugInfoProvider = { debugInfo }, origin = null, - messageShieldProvider = { messageShield }, + lazyTimelineItemProvider = object : LazyTimelineItemProvider { + override fun getTimelineItemDebugInfo() = debugInfo + override fun getShield(strict: Boolean) = messageShield + }, ) fun aProfileTimelineDetails(