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