Fix other API change: EventShieldsProvider and EventTimelineItemDebugInfoProvider have been replaced by LazyTimelineItemProvider

This commit is contained in:
Benoit Marty 2024-10-16 15:48:14 +02:00 committed by Benoit Marty
parent fb809dd074
commit 28d9da6d62
15 changed files with 105 additions and 100 deletions

View file

@ -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()
}
}

View file

@ -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,
)
)

View file

@ -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
}

View file

@ -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
}