diff --git a/core/src/main/java/org/futo/circles/core/feature/timeline/builder/SingleTimelineBuilder.kt b/core/src/main/java/org/futo/circles/core/feature/timeline/builder/SingleTimelineBuilder.kt index f72b0adf93cc798de4f308f16dea7238e1c80220..ff736068900623777913fab5299f109ebfe01697 100644 --- a/core/src/main/java/org/futo/circles/core/feature/timeline/builder/SingleTimelineBuilder.kt +++ b/core/src/main/java/org/futo/circles/core/feature/timeline/builder/SingleTimelineBuilder.kt @@ -1,5 +1,8 @@ package org.futo.circles.core.feature.timeline.builder +import org.futo.circles.core.extensions.getRoomOwner +import org.futo.circles.core.extensions.notEmptyDisplayName +import org.futo.circles.core.mapping.nameOrId import org.futo.circles.core.mapping.toPost import org.futo.circles.core.model.Post import org.futo.circles.core.provider.MatrixSessionProvider @@ -9,11 +12,24 @@ import javax.inject.Inject class SingleTimelineBuilder @Inject constructor() : BaseTimelineBuilder() { + private var currentSnapshotList: List<Post> = listOf() + override suspend fun List<TimelineEvent>.processSnapshot(isThread: Boolean): List<Post> { - val room = MatrixSessionProvider.currentSession?.getRoom(firstOrNull()?.roomId ?: "") - ?: return emptyList() + val roomId = firstOrNull()?.roomId ?: return currentSnapshotList + val room = + MatrixSessionProvider.currentSession?.getRoom(roomId) ?: return currentSnapshotList val receipts = getReadReceipts(room) - return sortList(this.map { it.toPost(receipts) }, isThread) + val roomName = room.roomSummary()?.nameOrId() + val roomOwnerName = getRoomOwner(roomId)?.notEmptyDisplayName() + val posts = this.map { + it.toPost( + receipts, + if (isThread) roomName else null, + if (isThread) roomOwnerName else null + ) + } + currentSnapshotList = posts + return sortList(posts, isThread) } } \ No newline at end of file