From f5d7132a5009df46f480ca059cd5941d4d2bcb7e Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 23 Nov 2022 18:56:15 +0100 Subject: [PATCH] Timeline: fix duplicate key with local echo --- .../features/messages/MessageTimelineItemStateMapper.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/MessageTimelineItemStateMapper.kt b/features/messages/src/main/java/io/element/android/x/features/messages/MessageTimelineItemStateMapper.kt index 11a31eb3a6..01a0674c27 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/MessageTimelineItemStateMapper.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/MessageTimelineItemStateMapper.kt @@ -14,6 +14,7 @@ import io.element.android.x.matrix.timeline.MatrixTimelineItem import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext import org.matrix.rustcomponents.sdk.MessageType +import org.matrix.rustcomponents.sdk.TimelineKey class MessageTimelineItemStateMapper( private val client: MatrixClient, @@ -52,10 +53,12 @@ class MessageTimelineItemStateMapper( val senderAvatarUrl = room.userAvatarUrl(currentSender).getOrNull() val senderAvatarData = loadAvatarData(senderDisplayName ?: currentSender, senderAvatarUrl) - - + val uniqueId = when (val eventKey = currentTimelineItem.event.key()) { + is TimelineKey.TransactionId -> eventKey.txnId + is TimelineKey.EventId -> eventKey.eventId + } return MessagesTimelineItemState.MessageEvent( - id = currentTimelineItem.event.eventId() ?: "", + id = uniqueId, senderId = currentSender, senderDisplayName = senderDisplayName, senderAvatar = senderAvatarData,