Fix other API change: EventShieldsProvider and EventTimelineItemDebugInfoProvider have been replaced by LazyTimelineItemProvider
This commit is contained in:
parent
5027fb5fe3
commit
83de862fc1
15 changed files with 105 additions and 100 deletions
|
|
@ -31,103 +31,109 @@ open class ActionListStateProvider : PreviewParameterProvider<ActionListState> {
|
||||||
return sequenceOf(
|
return sequenceOf(
|
||||||
anActionListState(),
|
anActionListState(),
|
||||||
anActionListState().copy(target = ActionListState.Target.Loading(aTimelineItemEvent())),
|
anActionListState().copy(target = ActionListState.Target.Loading(aTimelineItemEvent())),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent().copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState
|
timelineItemReactions = reactionsState
|
||||||
),
|
),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(
|
event = aTimelineItemEvent(
|
||||||
content = aTimelineItemImageContent(),
|
content = aTimelineItemImageContent(),
|
||||||
displayNameAmbiguous = true,
|
displayNameAmbiguous = true,
|
||||||
).copy(
|
timelineItemReactions = reactionsState,
|
||||||
reactionsState = reactionsState,
|
|
||||||
),
|
),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(content = aTimelineItemVideoContent()).copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState
|
content = aTimelineItemVideoContent(),
|
||||||
|
timelineItemReactions = reactionsState
|
||||||
),
|
),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(content = aTimelineItemFileContent()).copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState
|
content = aTimelineItemFileContent(),
|
||||||
|
timelineItemReactions = reactionsState
|
||||||
),
|
),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(content = aTimelineItemAudioContent()).copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState
|
content = aTimelineItemAudioContent(),
|
||||||
|
timelineItemReactions = reactionsState
|
||||||
),
|
),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(content = aTimelineItemVoiceContent()).copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState
|
content = aTimelineItemVoiceContent(),
|
||||||
|
timelineItemReactions = reactionsState
|
||||||
),
|
),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(content = aTimelineItemLocationContent()).copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState
|
content = aTimelineItemLocationContent(),
|
||||||
|
timelineItemReactions = reactionsState
|
||||||
),
|
),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(content = aTimelineItemLocationContent()).copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState
|
content = aTimelineItemLocationContent(),
|
||||||
|
timelineItemReactions = reactionsState
|
||||||
),
|
),
|
||||||
displayEmojiReactions = false,
|
displayEmojiReactions = false,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(content = aTimelineItemPollContent()).copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState
|
content = aTimelineItemPollContent(),
|
||||||
|
timelineItemReactions = reactionsState
|
||||||
),
|
),
|
||||||
displayEmojiReactions = false,
|
displayEmojiReactions = false,
|
||||||
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
verifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||||
actions = aTimelineItemPollActionList(),
|
actions = aTimelineItemPollActionList(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent().copy(
|
event = aTimelineItemEvent(
|
||||||
reactionsState = reactionsState,
|
timelineItemReactions = reactionsState,
|
||||||
messageShield = MessageShield.UnknownDevice(isCritical = true)
|
messageShield = MessageShield.UnknownDevice(isCritical = true)
|
||||||
),
|
),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
|
|
@ -135,7 +141,7 @@ open class ActionListStateProvider : PreviewParameterProvider<ActionListState> {
|
||||||
actions = aTimelineItemActionList(),
|
actions = aTimelineItemActionList(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
anActionListState().copy(
|
anActionListState(
|
||||||
target = ActionListState.Target.Success(
|
target = ActionListState.Target.Success(
|
||||||
event = aTimelineItemEvent(),
|
event = aTimelineItemEvent(),
|
||||||
displayEmojiReactions = true,
|
displayEmojiReactions = true,
|
||||||
|
|
|
||||||
|
|
@ -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.UniqueId
|
||||||
import io.element.android.libraries.matrix.api.core.UserId
|
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.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.LocalEventSendState
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
||||||
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails
|
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails
|
||||||
|
|
@ -164,10 +165,12 @@ internal fun aTimelineItemEvent(
|
||||||
groupPosition = groupPosition,
|
groupPosition = groupPosition,
|
||||||
localSendState = sendState,
|
localSendState = sendState,
|
||||||
inReplyTo = inReplyTo,
|
inReplyTo = inReplyTo,
|
||||||
debugInfoProvider = { debugInfo },
|
|
||||||
isThreaded = isThreaded,
|
isThreaded = isThreaded,
|
||||||
origin = null,
|
origin = null,
|
||||||
messageShield = messageShield,
|
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
|
||||||
|
override fun getTimelineItemDebugInfo(): TimelineItemDebugInfo = debugInfo
|
||||||
|
override fun getShield(strict: Boolean): MessageShield? = messageShield
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.features.messages.impl.timeline.protection.aTimelineProtectionState
|
||||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||||
|
import io.element.android.libraries.matrix.api.timeline.item.event.LazyTimelineItemProvider
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
|
|
||||||
@PreviewsDayNight
|
@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.
|
// For consistency, ensure that there is a message in the timeline (the last one) with an error.
|
||||||
val messageShield = aCriticalShield()
|
val messageShield = aCriticalShield()
|
||||||
val items = listOf(
|
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)
|
) + timelineItems.drop(1)
|
||||||
CompositionLocalProvider(
|
CompositionLocalProvider(
|
||||||
LocalTimelineItemPresenterFactories provides aFakeTimelineItemPresenterFactories(),
|
LocalTimelineItemPresenterFactories provides aFakeTimelineItemPresenterFactories(),
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,10 @@ class TimelineItemEventForTimestampViewProvider : PreviewParameterProvider<Timel
|
||||||
localSendState = LocalEventSendState.Failed.Unknown("AN_ERROR"),
|
localSendState = LocalEventSendState.Failed.Unknown("AN_ERROR"),
|
||||||
content = aTimelineItemTextContent().copy(isEdited = true),
|
content = aTimelineItemTextContent().copy(isEdited = true),
|
||||||
),
|
),
|
||||||
aTimelineItemEvent().copy(
|
aTimelineItemEvent(
|
||||||
messageShield = MessageShield.AuthenticityNotGuaranteed(isCritical = false),
|
messageShield = MessageShield.AuthenticityNotGuaranteed(isCritical = false),
|
||||||
),
|
),
|
||||||
aTimelineItemEvent().copy(
|
aTimelineItemEvent(
|
||||||
messageShield = MessageShield.UnknownDevice(isCritical = true),
|
messageShield = MessageShield.UnknownDevice(isCritical = true),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -85,9 +85,8 @@ class TimelineItemEventFactory @AssistedInject constructor(
|
||||||
localSendState = currentTimelineItem.event.localSendState,
|
localSendState = currentTimelineItem.event.localSendState,
|
||||||
inReplyTo = currentTimelineItem.event.inReplyTo()?.map(permalinkParser = permalinkParser),
|
inReplyTo = currentTimelineItem.event.inReplyTo()?.map(permalinkParser = permalinkParser),
|
||||||
isThreaded = currentTimelineItem.event.isThreaded(),
|
isThreaded = currentTimelineItem.event.isThreaded(),
|
||||||
debugInfoProvider = currentTimelineItem.event.debugInfoProvider,
|
|
||||||
origin = currentTimelineItem.event.origin,
|
origin = currentTimelineItem.event.origin,
|
||||||
messageShield = currentTimelineItem.event.messageShieldProvider.getShield(strict = false)
|
lazyTimelineItemProvider = currentTimelineItem.event.lazyTimelineItemProvider,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,8 @@ 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.TransactionId
|
||||||
import io.element.android.libraries.matrix.api.core.UniqueId
|
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.core.UserId
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.EventDebugInfoProvider
|
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.LocalEventSendState
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
||||||
|
|
@ -74,9 +75,8 @@ sealed interface TimelineItem {
|
||||||
val localSendState: LocalEventSendState?,
|
val localSendState: LocalEventSendState?,
|
||||||
val inReplyTo: InReplyToDetails?,
|
val inReplyTo: InReplyToDetails?,
|
||||||
val isThreaded: Boolean,
|
val isThreaded: Boolean,
|
||||||
val debugInfoProvider: EventDebugInfoProvider,
|
|
||||||
val origin: TimelineItemEventOrigin?,
|
val origin: TimelineItemEventOrigin?,
|
||||||
val messageShield: MessageShield?,
|
val lazyTimelineItemProvider: LazyTimelineItemProvider,
|
||||||
) : TimelineItem {
|
) : TimelineItem {
|
||||||
val showSenderInformation = groupPosition.isNew() && !isMine
|
val showSenderInformation = groupPosition.isNew() && !isMine
|
||||||
|
|
||||||
|
|
@ -90,7 +90,11 @@ sealed interface TimelineItem {
|
||||||
|
|
||||||
val isRemote = eventId != null
|
val isRemote = eventId != null
|
||||||
|
|
||||||
val debugInfo = debugInfoProvider.get()
|
// No need to be lazy here?
|
||||||
|
val messageShield: MessageShield? = lazyTimelineItemProvider.getShield(strict = false)
|
||||||
|
|
||||||
|
val debugInfo: TimelineItemDebugInfo
|
||||||
|
get() = lazyTimelineItemProvider.getTimelineItemDebugInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ 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.TransactionId
|
||||||
import io.element.android.libraries.matrix.api.core.UniqueId
|
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.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.LocalEventSendState
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
||||||
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
||||||
|
|
@ -58,8 +59,10 @@ internal fun aMessageEvent(
|
||||||
readReceiptState = TimelineItemReadReceipts(emptyList<ReadReceiptData>().toImmutableList()),
|
readReceiptState = TimelineItemReadReceipts(emptyList<ReadReceiptData>().toImmutableList()),
|
||||||
localSendState = sendState,
|
localSendState = sendState,
|
||||||
inReplyTo = inReplyTo,
|
inReplyTo = inReplyTo,
|
||||||
debugInfoProvider = { debugInfo },
|
|
||||||
isThreaded = isThreaded,
|
isThreaded = isThreaded,
|
||||||
origin = null,
|
origin = null,
|
||||||
messageShield = messageShield,
|
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
|
||||||
|
override fun getTimelineItemDebugInfo() = debugInfo
|
||||||
|
override fun getShield(strict: Boolean) = messageShield
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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.features.messages.impl.timeline.model.virtual.aTimelineItemDaySeparatorModel
|
||||||
import io.element.android.libraries.designsystem.components.avatar.anAvatarData
|
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.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.api.timeline.item.event.LocalEventSendState
|
||||||
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
||||||
import io.element.android.libraries.matrix.test.A_USER_ID
|
import io.element.android.libraries.matrix.test.A_USER_ID
|
||||||
|
|
@ -41,9 +42,11 @@ class TimelineItemGrouperTest {
|
||||||
canBeRepliedTo = false,
|
canBeRepliedTo = false,
|
||||||
inReplyTo = null,
|
inReplyTo = null,
|
||||||
isThreaded = false,
|
isThreaded = false,
|
||||||
debugInfoProvider = { aTimelineItemDebugInfo() },
|
|
||||||
origin = null,
|
origin = null,
|
||||||
messageShield = null,
|
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
|
||||||
|
override fun getTimelineItemDebugInfo() = aTimelineItemDebugInfo()
|
||||||
|
override fun getShield(strict: Boolean) = null
|
||||||
|
},
|
||||||
)
|
)
|
||||||
private val aNonGroupableItem = aMessageEvent()
|
private val aNonGroupableItem = aMessageEvent()
|
||||||
private val aNonGroupableItemNoEvent = TimelineItem.Virtual(UniqueId("virtual"), aTimelineItemDaySeparatorModel("Today"))
|
private val aNonGroupableItemNoEvent = TimelineItem.Virtual(UniqueId("virtual"), aTimelineItemDaySeparatorModel("Today"))
|
||||||
|
|
|
||||||
|
|
@ -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.MatrixTimelineItem
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
|
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.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.ProfileTimelineDetails
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent
|
import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent
|
||||||
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
||||||
|
|
@ -88,15 +89,16 @@ fun aRedactedMatrixTimeline(eventId: EventId) = listOf<MatrixTimelineItem>(
|
||||||
senderProfile = ProfileTimelineDetails.Unavailable,
|
senderProfile = ProfileTimelineDetails.Unavailable,
|
||||||
timestamp = 9442,
|
timestamp = 9442,
|
||||||
content = RedactedContent,
|
content = RedactedContent,
|
||||||
debugInfoProvider = {
|
origin = null,
|
||||||
TimelineItemDebugInfo(
|
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
|
||||||
|
override fun getTimelineItemDebugInfo() = TimelineItemDebugInfo(
|
||||||
model = "enim",
|
model = "enim",
|
||||||
originalJson = null,
|
originalJson = null,
|
||||||
latestEditedJson = null
|
latestEditedJson = null
|
||||||
)
|
)
|
||||||
|
|
||||||
|
override fun getShield(strict: Boolean) = null
|
||||||
},
|
},
|
||||||
origin = null,
|
|
||||||
messageShieldProvider = { null },
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,8 @@ data class EventTimelineItem(
|
||||||
val senderProfile: ProfileTimelineDetails,
|
val senderProfile: ProfileTimelineDetails,
|
||||||
val timestamp: Long,
|
val timestamp: Long,
|
||||||
val content: EventContent,
|
val content: EventContent,
|
||||||
val debugInfoProvider: EventDebugInfoProvider,
|
|
||||||
val origin: TimelineItemEventOrigin?,
|
val origin: TimelineItemEventOrigin?,
|
||||||
val messageShieldProvider: EventShieldsProvider,
|
val lazyTimelineItemProvider: LazyTimelineItemProvider,
|
||||||
) {
|
) {
|
||||||
fun inReplyTo(): InReplyTo? {
|
fun inReplyTo(): InReplyTo? {
|
||||||
return (content as? MessageContent)?.inReplyTo
|
return (content as? MessageContent)?.inReplyTo
|
||||||
|
|
@ -46,10 +45,7 @@ data class EventTimelineItem(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun interface EventDebugInfoProvider {
|
interface LazyTimelineItemProvider {
|
||||||
fun get(): TimelineItemDebugInfo
|
fun getTimelineItemDebugInfo(): TimelineItemDebugInfo
|
||||||
}
|
|
||||||
|
|
||||||
fun interface EventShieldsProvider {
|
|
||||||
fun getShield(strict: Boolean): MessageShield?
|
fun getShield(strict: Boolean): MessageShield?
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.TransactionId
|
||||||
import io.element.android.libraries.matrix.api.core.UserId
|
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.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.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.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.LocalEventSendState
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
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 kotlinx.collections.immutable.toImmutableList
|
||||||
import org.matrix.rustcomponents.sdk.EventOrTransactionId
|
import org.matrix.rustcomponents.sdk.EventOrTransactionId
|
||||||
import org.matrix.rustcomponents.sdk.EventSendState
|
import org.matrix.rustcomponents.sdk.EventSendState
|
||||||
import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfoProvider
|
|
||||||
import org.matrix.rustcomponents.sdk.Reaction
|
import org.matrix.rustcomponents.sdk.Reaction
|
||||||
import org.matrix.rustcomponents.sdk.ShieldState
|
import org.matrix.rustcomponents.sdk.ShieldState
|
||||||
import uniffi.matrix_sdk_common.ShieldStateCode
|
import uniffi.matrix_sdk_common.ShieldStateCode
|
||||||
import org.matrix.rustcomponents.sdk.EventSendState as RustEventSendState
|
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.EventTimelineItem as RustEventTimelineItem
|
||||||
import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo as RustEventTimelineItemDebugInfo
|
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.ProfileDetails as RustProfileDetails
|
||||||
import org.matrix.rustcomponents.sdk.Receipt as RustReceipt
|
import org.matrix.rustcomponents.sdk.Receipt as RustReceipt
|
||||||
import uniffi.matrix_sdk_ui.EventItemOrigin as RustEventItemOrigin
|
import uniffi.matrix_sdk_ui.EventItemOrigin as RustEventItemOrigin
|
||||||
|
|
@ -48,7 +46,8 @@ class EventTimelineItemMapper(
|
||||||
transactionId = eventOrTransactionId.transactionId(),
|
transactionId = eventOrTransactionId.transactionId(),
|
||||||
isEditable = isEditable,
|
isEditable = isEditable,
|
||||||
canBeRepliedTo = canBeRepliedTo,
|
canBeRepliedTo = canBeRepliedTo,
|
||||||
isLocal = isLocal,
|
// TODO Remove this field
|
||||||
|
isLocal = !isRemote,
|
||||||
isOwn = isOwn,
|
isOwn = isOwn,
|
||||||
isRemote = isRemote,
|
isRemote = isRemote,
|
||||||
localSendState = localSendState?.map(),
|
localSendState = localSendState?.map(),
|
||||||
|
|
@ -58,9 +57,8 @@ class EventTimelineItemMapper(
|
||||||
senderProfile = senderProfile.map(),
|
senderProfile = senderProfile.map(),
|
||||||
timestamp = timestamp.toLong(),
|
timestamp = timestamp.toLong(),
|
||||||
content = contentMapper.map(content),
|
content = contentMapper.map(content),
|
||||||
debugInfoProvider = RustEventDebugInfoProvider(debugInfoProvider),
|
|
||||||
origin = origin?.map(),
|
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 {
|
class LazyTimelineItemProviderWrapper(private val provider: RustLazyTimelineItemProvider) : LazyTimelineItemProvider {
|
||||||
override fun get(): TimelineItemDebugInfo {
|
override fun getTimelineItemDebugInfo(): TimelineItemDebugInfo {
|
||||||
return debugInfoProvider.get().map()
|
return provider.debugInfo().map()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
class RustEventShieldsProvider(private val shieldsProvider: RustEventShieldsProvider) : EventShieldsProvider {
|
|
||||||
override fun getShield(strict: Boolean): MessageShield? {
|
override fun getShield(strict: Boolean): MessageShield? {
|
||||||
return shieldsProvider.getShields(strict)?.map()
|
return provider.getShields(strict)?.map()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,7 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.impl.fixtures.factories
|
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.FakeRustLazyTimelineItemProvider
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustEventTimelineItemDebugInfoProvider
|
|
||||||
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
||||||
import io.element.android.libraries.matrix.test.A_USER_ID
|
import io.element.android.libraries.matrix.test.A_USER_ID
|
||||||
import org.matrix.rustcomponents.sdk.EventOrTransactionId
|
import org.matrix.rustcomponents.sdk.EventOrTransactionId
|
||||||
|
|
@ -23,7 +22,6 @@ import org.matrix.rustcomponents.sdk.TimelineItemContent
|
||||||
import uniffi.matrix_sdk_ui.EventItemOrigin
|
import uniffi.matrix_sdk_ui.EventItemOrigin
|
||||||
|
|
||||||
fun aRustEventTimelineItem(
|
fun aRustEventTimelineItem(
|
||||||
isLocal: Boolean = false,
|
|
||||||
isRemote: Boolean = true,
|
isRemote: Boolean = true,
|
||||||
eventOrTransactionId: EventOrTransactionId = EventOrTransactionId.EventId(AN_EVENT_ID.value),
|
eventOrTransactionId: EventOrTransactionId = EventOrTransactionId.EventId(AN_EVENT_ID.value),
|
||||||
sender: String = A_USER_ID.value,
|
sender: String = A_USER_ID.value,
|
||||||
|
|
@ -40,7 +38,6 @@ fun aRustEventTimelineItem(
|
||||||
canBeRepliedTo: Boolean = true,
|
canBeRepliedTo: Boolean = true,
|
||||||
shieldsState: ShieldState? = null,
|
shieldsState: ShieldState? = null,
|
||||||
) = EventTimelineItem(
|
) = EventTimelineItem(
|
||||||
isLocal = isLocal,
|
|
||||||
isRemote = isRemote,
|
isRemote = isRemote,
|
||||||
eventOrTransactionId = eventOrTransactionId,
|
eventOrTransactionId = eventOrTransactionId,
|
||||||
sender = sender,
|
sender = sender,
|
||||||
|
|
@ -50,10 +47,12 @@ fun aRustEventTimelineItem(
|
||||||
isEditable = isEditable,
|
isEditable = isEditable,
|
||||||
canBeRepliedTo = canBeRepliedTo,
|
canBeRepliedTo = canBeRepliedTo,
|
||||||
content = content,
|
content = content,
|
||||||
debugInfoProvider = FakeRustEventTimelineItemDebugInfoProvider(debugInfo),
|
|
||||||
shieldsProvider = FakeRustEventShieldsProvider(shieldsState),
|
|
||||||
localSendState = localSendState,
|
localSendState = localSendState,
|
||||||
reactions = reactions,
|
reactions = reactions,
|
||||||
readReceipts = readReceipts,
|
readReceipts = readReceipts,
|
||||||
origin = origin,
|
origin = origin,
|
||||||
|
lazyProvider = FakeRustLazyTimelineItemProvider(
|
||||||
|
debugInfo = debugInfo,
|
||||||
|
shieldsState = shieldsState,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
}
|
|
||||||
|
|
@ -9,11 +9,14 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.factories.anEventTimelineItemDebugInfo
|
import io.element.android.libraries.matrix.impl.fixtures.factories.anEventTimelineItemDebugInfo
|
||||||
import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo
|
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.NoPointer
|
||||||
|
import org.matrix.rustcomponents.sdk.ShieldState
|
||||||
|
|
||||||
class FakeRustEventTimelineItemDebugInfoProvider(
|
class FakeRustLazyTimelineItemProvider(
|
||||||
private val debugInfo: EventTimelineItemDebugInfo = anEventTimelineItemDebugInfo(),
|
private val debugInfo: EventTimelineItemDebugInfo = anEventTimelineItemDebugInfo(),
|
||||||
) : EventTimelineItemDebugInfoProvider(NoPointer) {
|
private val shieldsState: ShieldState? = null,
|
||||||
override fun get(): EventTimelineItemDebugInfo = debugInfo
|
) : LazyTimelineItemProvider(NoPointer) {
|
||||||
|
override fun getShields(strict: Boolean) = shieldsState
|
||||||
|
override fun debugInfo() = debugInfo
|
||||||
}
|
}
|
||||||
|
|
@ -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.EventReaction
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
|
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.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.LocalEventSendState
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
|
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield
|
||||||
|
|
@ -69,9 +70,11 @@ fun anEventTimelineItem(
|
||||||
senderProfile = senderProfile,
|
senderProfile = senderProfile,
|
||||||
timestamp = timestamp,
|
timestamp = timestamp,
|
||||||
content = content,
|
content = content,
|
||||||
debugInfoProvider = { debugInfo },
|
|
||||||
origin = null,
|
origin = null,
|
||||||
messageShieldProvider = { messageShield },
|
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
|
||||||
|
override fun getTimelineItemDebugInfo() = debugInfo
|
||||||
|
override fun getShield(strict: Boolean) = messageShield
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
fun aProfileTimelineDetails(
|
fun aProfileTimelineDetails(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue