Timeline: fix duplicate key with local echo

This commit is contained in:
ganfra 2022-11-23 18:56:15 +01:00
parent 5c5efdc911
commit b294ad132c

View file

@ -14,6 +14,7 @@ import io.element.android.x.matrix.timeline.MatrixTimelineItem
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.matrix.rustcomponents.sdk.MessageType import org.matrix.rustcomponents.sdk.MessageType
import org.matrix.rustcomponents.sdk.TimelineKey
class MessageTimelineItemStateMapper( class MessageTimelineItemStateMapper(
private val client: MatrixClient, private val client: MatrixClient,
@ -52,10 +53,12 @@ class MessageTimelineItemStateMapper(
val senderAvatarUrl = room.userAvatarUrl(currentSender).getOrNull() val senderAvatarUrl = room.userAvatarUrl(currentSender).getOrNull()
val senderAvatarData = val senderAvatarData =
loadAvatarData(senderDisplayName ?: currentSender, senderAvatarUrl) 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( return MessagesTimelineItemState.MessageEvent(
id = currentTimelineItem.event.eventId() ?: "", id = uniqueId,
senderId = currentSender, senderId = currentSender,
senderDisplayName = senderDisplayName, senderDisplayName = senderDisplayName,
senderAvatar = senderAvatarData, senderAvatar = senderAvatarData,