From 1776178c7a28847bfc44cdc6b8c00f58aeb054bd Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Thu, 3 Nov 2022 15:57:21 -0300
Subject: [PATCH] Take a slightly different approach for interaction between
 ForumViewModel and ThreadedConversationViewModel

---
 .../briar/desktop/forums/ForumViewModel.kt             |  3 +--
 .../desktop/forums/ThreadedConversationViewModel.kt    | 10 ++++++----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumViewModel.kt
index 3670303703..7a10cd6438 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumViewModel.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumViewModel.kt
@@ -80,7 +80,6 @@ class ForumViewModel @Inject constructor(
 
     override fun onInit() {
         super.onInit()
-        threadViewModel.forumViewModel = this
         loadGroups()
     }
 
@@ -127,7 +126,7 @@ class ForumViewModel @Inject constructor(
 
     fun selectGroup(groupItem: GroupItem) {
         _selectedGroupItem.value = groupItem
-        threadViewModel.setGroupItem(groupItem)
+        threadViewModel.setGroupItem(groupItem, this::addOwnPost)
     }
 
     fun isSelected(groupId: GroupId) = _selectedGroupItem.value?.id == groupId
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ThreadedConversationViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ThreadedConversationViewModel.kt
index 78ad948c82..b196a0232a 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ThreadedConversationViewModel.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ThreadedConversationViewModel.kt
@@ -36,6 +36,7 @@ import org.briarproject.bramble.api.sync.MessageId
 import org.briarproject.bramble.api.system.Clock
 import org.briarproject.briar.api.client.MessageTracker
 import org.briarproject.briar.api.forum.ForumManager
+import org.briarproject.briar.api.forum.ForumPostHeader
 import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent
 import org.briarproject.briar.client.MessageTreeImpl
 import org.briarproject.briar.desktop.threading.BriarExecutors
@@ -61,11 +62,11 @@ class ThreadedConversationViewModel @Inject constructor(
         private val LOG = getLogger(ThreadedConversationViewModel::class.java)
     }
 
-    lateinit var forumViewModel: ForumViewModel
-
     lateinit var groupItem: GroupItem
         private set
 
+    private lateinit var onPostAdded: (header: ForumPostHeader) -> Unit
+
     private val _posts = mutableStateOf<PostsState>(Loading)
     val posts = _posts.asState()
 
@@ -73,8 +74,9 @@ class ThreadedConversationViewModel @Inject constructor(
     val selectedPost = _selectedPost.asState()
 
     @UiExecutor
-    fun setGroupItem(groupItem: GroupItem) {
+    fun setGroupItem(groupItem: GroupItem, onPostAdded: (header: ForumPostHeader) -> Unit) {
         this.groupItem = groupItem
+        this.onPostAdded = onPostAdded
         _selectedPost.value = null
         loadPosts(groupItem.id)
     }
@@ -124,9 +126,9 @@ class ThreadedConversationViewModel @Inject constructor(
         runOnDbThreadWithTransaction(false) { txn ->
             val header = forumManager.addLocalPost(txn, post)
             txn.attach {
-                forumViewModel.addOwnPost(header)
                 val item = ForumPostItem(header, text)
                 addItem(item, item.id)
+                onPostAdded(header)
                 // unselect post that we just replied to
                 if (parentId != null) {
                     _selectedPost.value = null
-- 
GitLab