From c783a80f7af7aedb8383bb76105a378e6d57c0df Mon Sep 17 00:00:00 2001 From: ialokim <ialokim@mailbox.org> Date: Sat, 29 Oct 2022 12:42:18 +0200 Subject: [PATCH] update forum list items when sending new posts using callback --- .../briarproject/briar/desktop/forums/ForumViewModel.kt | 7 ++++++- .../briar/desktop/forums/ThreadedConversationViewModel.kt | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) 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 bc8ff410fe..3670303703 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 @@ -30,6 +30,7 @@ import org.briarproject.bramble.api.sync.GroupId import org.briarproject.bramble.api.sync.event.GroupAddedEvent import org.briarproject.bramble.api.sync.event.GroupRemovedEvent 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.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.utils.clearAndAddAll @@ -79,6 +80,7 @@ class ForumViewModel @Inject constructor( override fun onInit() { super.onInit() + threadViewModel.forumViewModel = this loadGroups() } @@ -102,7 +104,6 @@ class ForumViewModel @Inject constructor( } e is ForumPostReceivedEvent -> { - // todo: better use equivalent to ConversationMessageTrackedEvent to update on new *own* posts as well updateItem(e.groupId) { it.updateOnPostReceived(e.header) } } } @@ -135,6 +136,10 @@ class ForumViewModel @Inject constructor( _filterBy.value = filter } + fun addOwnPost(header: ForumPostHeader) { + selectedGroupItem.value?.id?.let { id -> updateItem(id) { it.updateOnPostReceived(header) } } + } + private fun addItem(forumItem: ForumItem) = _fullForumList.add(forumItem) private fun updateItem(forumId: GroupId, update: (ForumItem) -> ForumItem) { 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 ab917e57eb..78ad948c82 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 @@ -61,6 +61,8 @@ class ThreadedConversationViewModel @Inject constructor( private val LOG = getLogger(ThreadedConversationViewModel::class.java) } + lateinit var forumViewModel: ForumViewModel + lateinit var groupItem: GroupItem private set @@ -122,6 +124,7 @@ 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) // unselect post that we just replied to -- GitLab