Separate eventId and id for TimelineItem.Event

This commit is contained in:
ganfra
2023-02-07 19:47:49 +01:00
parent 0f6744ab74
commit e5bd96049e
6 changed files with 17 additions and 8 deletions

View File

@@ -111,12 +111,14 @@ class MessagesPresenter @Inject constructor(
}
private suspend fun handleActionRedact(event: TimelineItem.Event) {
room.redactEvent(event.id)
if (event.eventId == null) return
room.redactEvent(event.eventId)
}
private fun handleActionEdit(targetEvent: TimelineItem.Event, composerState: MessageComposerState) {
if (targetEvent.eventId == null) return
val composerMode = MessageComposerMode.Edit(
targetEvent.id,
targetEvent.eventId,
(targetEvent.content as? TimelineItemTextBasedContent)?.body.orEmpty()
)
composerState.eventSink(
@@ -125,7 +127,8 @@ class MessagesPresenter @Inject constructor(
}
private fun handleActionReply(targetEvent: TimelineItem.Event, composerState: MessageComposerState) {
val composerMode = MessageComposerMode.Reply(targetEvent.safeSenderName, targetEvent.id, "")
if (targetEvent.eventId == null) return
val composerMode = MessageComposerMode.Reply(targetEvent.safeSenderName, targetEvent.eventId, "")
composerState.eventSink(
MessageComposerEvents.SetMode(composerMode)
)

View File

@@ -141,12 +141,13 @@ fun TimelineView(
private fun TimelineItem.key(): String {
return when (this) {
is TimelineItem.Event -> id.value
is TimelineItem.Event -> id
is TimelineItem.Virtual -> id
}
}
private fun TimelineItem.contentType(): Int {
// Todo optimize for each subtype
return when (this) {
is TimelineItem.Event -> 0
is TimelineItem.Virtual -> 1
@@ -415,7 +416,7 @@ private fun createMessageEvent(
groupPosition: MessagesItemGroupPosition
): TimelineItem {
return TimelineItem.Event(
id = EventId(Math.random().toString()),
id = Math.random().toString(),
senderId = "senderId",
senderAvatar = AvatarData("sender"),
content = content,

View File

@@ -22,7 +22,6 @@ import io.element.android.features.messages.timeline.model.TimelineItem
import io.element.android.features.messages.timeline.model.TimelineItemReactions
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.matrix.core.EventId
import io.element.android.libraries.matrix.room.MatrixRoom
import io.element.android.libraries.matrix.timeline.MatrixTimelineItem
import kotlinx.collections.immutable.toImmutableList
@@ -64,7 +63,8 @@ class TimelineItemEventFactory @Inject constructor(
size = AvatarSize.SMALL
)
return TimelineItem.Event(
id = EventId(currentTimelineItem.uniqueId),
id = currentTimelineItem.uniqueId,
eventId = currentTimelineItem.eventId,
senderId = currentSender,
senderDisplayName = senderDisplayName,
senderAvatar = senderAvatarData,

View File

@@ -30,7 +30,8 @@ sealed interface TimelineItem {
) : TimelineItem
data class Event(
val id: EventId,
val id: String,
val eventId: EventId? = null,
val senderId: String,
val senderDisplayName: String?,
val senderAvatar: AvatarData,

View File

@@ -16,9 +16,11 @@
package io.element.android.features.messages.timeline.model.event
import androidx.compose.runtime.Immutable
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import org.matrix.rustcomponents.sdk.EncryptedMessage
@Immutable
sealed interface TimelineItemEventContent
class MessagesTimelineItemContentProvider : PreviewParameterProvider<TimelineItemEventContent> {

View File

@@ -16,6 +16,7 @@
package io.element.android.libraries.matrix.timeline
import io.element.android.libraries.matrix.core.EventId
import org.matrix.rustcomponents.sdk.EventTimelineItem
import org.matrix.rustcomponents.sdk.TimelineItem
import org.matrix.rustcomponents.sdk.VirtualTimelineItem
@@ -23,6 +24,7 @@ import org.matrix.rustcomponents.sdk.VirtualTimelineItem
sealed interface MatrixTimelineItem {
data class Event(val event: EventTimelineItem) : MatrixTimelineItem {
val uniqueId: String = event.uniqueIdentifier()
val eventId: EventId? = event.eventId()?.let { EventId(it) }
}
data class Virtual(val virtual: VirtualTimelineItem) : MatrixTimelineItem