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 3670303703bdce944844fb50e7fd122e5d9d685f..7a10cd643883a0cbef15204220174d484061da8e 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 78ad948c82a4ff67175adf1cc637ec523a4f7073..b196a0232a6c6a6557aacc3a777e42bf5c05e0a7 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