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