Compute aggregatedReadReceipts in a background worker.

This commit is contained in:
Benoit Marty
2023-11-28 15:10:42 +01:00
parent 60332bf64a
commit 16f5705dff
5 changed files with 16 additions and 14 deletions

View File

@@ -204,11 +204,10 @@ internal fun aGroupedEvents(id: Long = 0): TimelineItem.GroupedEvents {
receipts = listOf(aReadReceiptData(1)).toPersistentList(),
),
)
val events = listOf(event1, event2)
return TimelineItem.GroupedEvents(
id = id.toString(),
events = listOf(
event1,
event2,
).toImmutableList()
events = events.toImmutableList(),
aggregatedReadReceipts = events.flatMap { it.readReceiptState.receipts }.toImmutableList(),
)
}

View File

@@ -37,7 +37,6 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
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.UserId
import kotlinx.collections.immutable.toImmutableList
@Composable
fun TimelineItemGroupedEventsRow(
@@ -147,7 +146,7 @@ private fun TimelineItemGroupedEventsRowContent(
state = ReadReceiptViewState(
sendState = null,
isLastOutgoingMessage = false,
receipts = timelineItem.events.flatMap { it.readReceiptState.receipts }.toImmutableList(),
receipts = timelineItem.aggregatedReadReceipts,
),
showReadReceipts = true,
onReadReceiptsClicked = { /* No op for group event */ })

View File

@@ -73,7 +73,8 @@ private fun MutableList<TimelineItem>.addGroup(
add(
TimelineItem.GroupedEvents(
id = groupId,
events = groupOfItems.toImmutableList()
events = groupOfItems.toImmutableList(),
aggregatedReadReceipts = groupOfItems.flatMap { it.readReceiptState.receipts }.toImmutableList()
)
)
}

View File

@@ -88,6 +88,6 @@ sealed interface TimelineItem {
data class GroupedEvents(
val id: String,
val events: ImmutableList<Event>,
val aggregatedReadReceipts: ImmutableList<ReadReceiptData>,
) : TimelineItem
}

View File

@@ -86,11 +86,12 @@ class TimelineItemGrouperTest {
assertThat(result).isEqualTo(
listOf(
TimelineItem.GroupedEvents(
computeGroupIdWith(aGroupableItem),
id = computeGroupIdWith(aGroupableItem),
events = listOf(
aGroupableItem.copy("0"),
aGroupableItem.copy(id = "1"),
).toImmutableList()
).toImmutableList(),
aggregatedReadReceipts = emptyList<ReadReceiptData>().toImmutableList(),
),
)
)
@@ -132,20 +133,22 @@ class TimelineItemGrouperTest {
assertThat(result).isEqualTo(
listOf(
TimelineItem.GroupedEvents(
computeGroupIdWith(aGroupableItem),
id = computeGroupIdWith(aGroupableItem),
events = listOf(
aGroupableItem,
aGroupableItem,
).toImmutableList()
).toImmutableList(),
aggregatedReadReceipts = emptyList<ReadReceiptData>().toImmutableList(),
),
aNonGroupableItem,
TimelineItem.GroupedEvents(
computeGroupIdWith(aGroupableItem),
id = computeGroupIdWith(aGroupableItem),
events = listOf(
aGroupableItem,
aGroupableItem,
aGroupableItem,
).toImmutableList()
).toImmutableList(),
aggregatedReadReceipts = emptyList<ReadReceiptData>().toImmutableList(),
)
)
)