Add read receipt on GroupedEvents

This commit is contained in:
Benoit Marty 2023-11-28 14:26:37 +01:00
parent 3ff23bd6d8
commit f7459b4b57
2 changed files with 22 additions and 3 deletions

View file

@ -16,6 +16,7 @@
package io.element.android.features.messages.impl.timeline package io.element.android.features.messages.impl.timeline
import io.element.android.features.messages.impl.timeline.components.receipt.aReadReceiptData
import io.element.android.features.messages.impl.timeline.model.InReplyToDetails import io.element.android.features.messages.impl.timeline.model.InReplyToDetails
import io.element.android.features.messages.impl.timeline.model.ReadReceiptData import io.element.android.features.messages.impl.timeline.model.ReadReceiptData
import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.TimelineItem
@ -186,16 +187,22 @@ internal fun aTimelineItemReadReceipts(): TimelineItemReadReceipts {
) )
} }
fun aGroupedEvents(id: Long = 0): TimelineItem.GroupedEvents { internal fun aGroupedEvents(id: Long = 0): TimelineItem.GroupedEvents {
val event1 = aTimelineItemEvent( val event1 = aTimelineItemEvent(
isMine = true, isMine = true,
content = aTimelineItemStateEventContent(), content = aTimelineItemStateEventContent(),
groupPosition = TimelineItemGroupPosition.None groupPosition = TimelineItemGroupPosition.None,
readReceiptState = TimelineItemReadReceipts(
receipts = listOf(aReadReceiptData(0)).toPersistentList(),
),
) )
val event2 = aTimelineItemEvent( val event2 = aTimelineItemEvent(
isMine = true, isMine = true,
content = aTimelineItemStateEventContent(body = "Another state event"), content = aTimelineItemStateEventContent(body = "Another state event"),
groupPosition = TimelineItemGroupPosition.None groupPosition = TimelineItemGroupPosition.None,
readReceiptState = TimelineItemReadReceipts(
receipts = listOf(aReadReceiptData(1)).toPersistentList(),
),
) )
return TimelineItem.GroupedEvents( return TimelineItem.GroupedEvents(
id = id.toString(), id = id.toString(),

View file

@ -28,6 +28,8 @@ import io.element.android.features.messages.impl.timeline.TimelineEvents
import io.element.android.features.messages.impl.timeline.TimelineItemRow import io.element.android.features.messages.impl.timeline.TimelineItemRow
import io.element.android.features.messages.impl.timeline.aGroupedEvents import io.element.android.features.messages.impl.timeline.aGroupedEvents
import io.element.android.features.messages.impl.timeline.components.group.GroupHeaderView import io.element.android.features.messages.impl.timeline.components.group.GroupHeaderView
import io.element.android.features.messages.impl.timeline.components.receipt.ReadReceiptViewState
import io.element.android.features.messages.impl.timeline.components.receipt.TimelineItemReadReceiptView
import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.TimelineItem
import io.element.android.features.messages.impl.timeline.session.SessionState import io.element.android.features.messages.impl.timeline.session.SessionState
import io.element.android.features.messages.impl.timeline.session.aSessionState import io.element.android.features.messages.impl.timeline.session.aSessionState
@ -35,6 +37,7 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
import kotlinx.collections.immutable.toImmutableList
@Composable @Composable
fun TimelineItemGroupedEventsRow( fun TimelineItemGroupedEventsRow(
@ -139,6 +142,15 @@ private fun TimelineItemGroupedEventsRowContent(
) )
} }
} }
} else if (showReadReceipts) {
TimelineItemReadReceiptView(
state = ReadReceiptViewState(
sendState = null,
isLastOutgoingMessage = false,
receipts = timelineItem.events.flatMap { it.readReceiptState.receipts }.toImmutableList(),
),
showReadReceipts = true,
onReadReceiptsClicked = { /* No op for group event */ })
} }
} }
} }