Restore fun interface for a sweeter code.
This commit is contained in:
parent
70c643be5e
commit
0db54df877
10 changed files with 31 additions and 53 deletions
|
|
@ -28,7 +28,8 @@ data class EventTimelineItem(
|
|||
val timestamp: Long,
|
||||
val content: EventContent,
|
||||
val origin: TimelineItemEventOrigin?,
|
||||
val lazyTimelineItemProvider: LazyTimelineItemProvider,
|
||||
val timelineItemDebugInfoProvider: TimelineItemDebugInfoProvider,
|
||||
val messageShieldProvider: MessageShieldProvider,
|
||||
) {
|
||||
fun inReplyTo(): InReplyTo? {
|
||||
return (content as? MessageContent)?.inReplyTo
|
||||
|
|
@ -44,7 +45,10 @@ data class EventTimelineItem(
|
|||
}
|
||||
}
|
||||
|
||||
interface LazyTimelineItemProvider {
|
||||
fun getTimelineItemDebugInfo(): TimelineItemDebugInfo
|
||||
fun getShield(strict: Boolean): MessageShield?
|
||||
fun interface TimelineItemDebugInfoProvider {
|
||||
operator fun invoke(): TimelineItemDebugInfo
|
||||
}
|
||||
|
||||
fun interface MessageShieldProvider {
|
||||
operator fun invoke(strict: Boolean): MessageShield?
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ 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.EventReaction
|
||||
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
|
||||
|
|
@ -32,7 +31,6 @@ import uniffi.matrix_sdk_common.ShieldStateCode
|
|||
import org.matrix.rustcomponents.sdk.EventSendState as RustEventSendState
|
||||
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
|
||||
|
|
@ -56,7 +54,8 @@ class EventTimelineItemMapper(
|
|||
timestamp = timestamp.toLong(),
|
||||
content = contentMapper.map(content),
|
||||
origin = origin?.map(),
|
||||
lazyTimelineItemProvider = LazyTimelineItemProviderWrapper(lazyProvider)
|
||||
timelineItemDebugInfoProvider = { lazyProvider.debugInfo().map() },
|
||||
messageShieldProvider = { strict -> lazyProvider.getShields(strict)?.map() },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -164,16 +163,6 @@ private fun ShieldState?.map(): MessageShield? {
|
|||
}
|
||||
}
|
||||
|
||||
class LazyTimelineItemProviderWrapper(private val provider: RustLazyTimelineItemProvider) : LazyTimelineItemProvider {
|
||||
override fun getTimelineItemDebugInfo(): TimelineItemDebugInfo {
|
||||
return provider.debugInfo().map()
|
||||
}
|
||||
|
||||
override fun getShield(strict: Boolean): MessageShield? {
|
||||
return provider.getShields(strict)?.map()
|
||||
}
|
||||
}
|
||||
|
||||
private fun EventOrTransactionId.eventId(): EventId? {
|
||||
return (this as? EventOrTransactionId.EventId)?.let { EventId(it.eventId) }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ 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,10 +68,8 @@ fun anEventTimelineItem(
|
|||
timestamp = timestamp,
|
||||
content = content,
|
||||
origin = null,
|
||||
lazyTimelineItemProvider = object : LazyTimelineItemProvider {
|
||||
override fun getTimelineItemDebugInfo() = debugInfo
|
||||
override fun getShield(strict: Boolean) = messageShield
|
||||
},
|
||||
timelineItemDebugInfoProvider = { debugInfo },
|
||||
messageShieldProvider = { messageShield },
|
||||
)
|
||||
|
||||
fun aProfileTimelineDetails(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue