mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
Separate eventId and id for TimelineItem.Event
This commit is contained in:
+6
-3
@@ -111,12 +111,14 @@ class MessagesPresenter @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun handleActionRedact(event: TimelineItem.Event) {
|
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) {
|
private fun handleActionEdit(targetEvent: TimelineItem.Event, composerState: MessageComposerState) {
|
||||||
|
if (targetEvent.eventId == null) return
|
||||||
val composerMode = MessageComposerMode.Edit(
|
val composerMode = MessageComposerMode.Edit(
|
||||||
targetEvent.id,
|
targetEvent.eventId,
|
||||||
(targetEvent.content as? TimelineItemTextBasedContent)?.body.orEmpty()
|
(targetEvent.content as? TimelineItemTextBasedContent)?.body.orEmpty()
|
||||||
)
|
)
|
||||||
composerState.eventSink(
|
composerState.eventSink(
|
||||||
@@ -125,7 +127,8 @@ class MessagesPresenter @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun handleActionReply(targetEvent: TimelineItem.Event, composerState: MessageComposerState) {
|
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(
|
composerState.eventSink(
|
||||||
MessageComposerEvents.SetMode(composerMode)
|
MessageComposerEvents.SetMode(composerMode)
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-2
@@ -141,12 +141,13 @@ fun TimelineView(
|
|||||||
|
|
||||||
private fun TimelineItem.key(): String {
|
private fun TimelineItem.key(): String {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is TimelineItem.Event -> id.value
|
is TimelineItem.Event -> id
|
||||||
is TimelineItem.Virtual -> id
|
is TimelineItem.Virtual -> id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun TimelineItem.contentType(): Int {
|
private fun TimelineItem.contentType(): Int {
|
||||||
|
// Todo optimize for each subtype
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is TimelineItem.Event -> 0
|
is TimelineItem.Event -> 0
|
||||||
is TimelineItem.Virtual -> 1
|
is TimelineItem.Virtual -> 1
|
||||||
@@ -415,7 +416,7 @@ private fun createMessageEvent(
|
|||||||
groupPosition: MessagesItemGroupPosition
|
groupPosition: MessagesItemGroupPosition
|
||||||
): TimelineItem {
|
): TimelineItem {
|
||||||
return TimelineItem.Event(
|
return TimelineItem.Event(
|
||||||
id = EventId(Math.random().toString()),
|
id = Math.random().toString(),
|
||||||
senderId = "senderId",
|
senderId = "senderId",
|
||||||
senderAvatar = AvatarData("sender"),
|
senderAvatar = AvatarData("sender"),
|
||||||
content = content,
|
content = content,
|
||||||
|
|||||||
+2
-2
@@ -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.features.messages.timeline.model.TimelineItemReactions
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
|
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.room.MatrixRoom
|
||||||
import io.element.android.libraries.matrix.timeline.MatrixTimelineItem
|
import io.element.android.libraries.matrix.timeline.MatrixTimelineItem
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
@@ -64,7 +63,8 @@ class TimelineItemEventFactory @Inject constructor(
|
|||||||
size = AvatarSize.SMALL
|
size = AvatarSize.SMALL
|
||||||
)
|
)
|
||||||
return TimelineItem.Event(
|
return TimelineItem.Event(
|
||||||
id = EventId(currentTimelineItem.uniqueId),
|
id = currentTimelineItem.uniqueId,
|
||||||
|
eventId = currentTimelineItem.eventId,
|
||||||
senderId = currentSender,
|
senderId = currentSender,
|
||||||
senderDisplayName = senderDisplayName,
|
senderDisplayName = senderDisplayName,
|
||||||
senderAvatar = senderAvatarData,
|
senderAvatar = senderAvatarData,
|
||||||
|
|||||||
+2
-1
@@ -30,7 +30,8 @@ sealed interface TimelineItem {
|
|||||||
) : TimelineItem
|
) : TimelineItem
|
||||||
|
|
||||||
data class Event(
|
data class Event(
|
||||||
val id: EventId,
|
val id: String,
|
||||||
|
val eventId: EventId? = null,
|
||||||
val senderId: String,
|
val senderId: String,
|
||||||
val senderDisplayName: String?,
|
val senderDisplayName: String?,
|
||||||
val senderAvatar: AvatarData,
|
val senderAvatar: AvatarData,
|
||||||
|
|||||||
+2
@@ -16,9 +16,11 @@
|
|||||||
|
|
||||||
package io.element.android.features.messages.timeline.model.event
|
package io.element.android.features.messages.timeline.model.event
|
||||||
|
|
||||||
|
import androidx.compose.runtime.Immutable
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import org.matrix.rustcomponents.sdk.EncryptedMessage
|
import org.matrix.rustcomponents.sdk.EncryptedMessage
|
||||||
|
|
||||||
|
@Immutable
|
||||||
sealed interface TimelineItemEventContent
|
sealed interface TimelineItemEventContent
|
||||||
|
|
||||||
class MessagesTimelineItemContentProvider : PreviewParameterProvider<TimelineItemEventContent> {
|
class MessagesTimelineItemContentProvider : PreviewParameterProvider<TimelineItemEventContent> {
|
||||||
|
|||||||
+2
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package io.element.android.libraries.matrix.timeline
|
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.EventTimelineItem
|
||||||
import org.matrix.rustcomponents.sdk.TimelineItem
|
import org.matrix.rustcomponents.sdk.TimelineItem
|
||||||
import org.matrix.rustcomponents.sdk.VirtualTimelineItem
|
import org.matrix.rustcomponents.sdk.VirtualTimelineItem
|
||||||
@@ -23,6 +24,7 @@ import org.matrix.rustcomponents.sdk.VirtualTimelineItem
|
|||||||
sealed interface MatrixTimelineItem {
|
sealed interface MatrixTimelineItem {
|
||||||
data class Event(val event: EventTimelineItem) : MatrixTimelineItem {
|
data class Event(val event: EventTimelineItem) : MatrixTimelineItem {
|
||||||
val uniqueId: String = event.uniqueIdentifier()
|
val uniqueId: String = event.uniqueIdentifier()
|
||||||
|
val eventId: EventId? = event.eventId()?.let { EventId(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
data class Virtual(val virtual: VirtualTimelineItem) : MatrixTimelineItem
|
data class Virtual(val virtual: VirtualTimelineItem) : MatrixTimelineItem
|
||||||
|
|||||||
Reference in New Issue
Block a user