From 30db1cf9d9db5ecf716b5d8c5ff575e81567a468 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Fri, 23 Feb 2024 13:52:07 +0200 Subject: [PATCH] Add owner/room for thread posts --- .../timeline/builder/SingleTimelineBuilder.kt | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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 f72b0adf9..ff7360689 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 -- GitLab