From e49d69be0a0c43934f61986a3f70428fad7347bc Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Mon, 26 Sep 2022 08:44:10 -0300
Subject: [PATCH] Pull ThreadedConversationViewModel into ForumViewModel

---
 .../briar/desktop/forums/ForumScreen.kt            |  2 +-
 .../briar/desktop/forums/ForumViewModel.kt         |  2 ++
 .../desktop/forums/GroupConversationScreen.kt      | 14 +++++---------
 .../forums/ThreadedConversationViewModel.kt        |  3 ++-
 .../briar/desktop/viewmodel/ViewModelModule.kt     |  2 +-
 5 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumScreen.kt
index 1175483492..e38203b3af 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumScreen.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumScreen.kt
@@ -67,7 +67,7 @@ fun ForumScreen(
                 if (item == null) {
                     NoForumSelected()
                 } else {
-                    GroupConversationScreen(item)
+                    GroupConversationScreen(viewModel.threadViewModel)
                 }
             }
         }
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 9b05d6db6c..2fbe3812af 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
@@ -36,6 +36,7 @@ import org.briarproject.briar.desktop.viewmodel.asState
 import javax.inject.Inject
 
 class ForumViewModel @Inject constructor(
+    val threadViewModel: ThreadedConversationViewModel,
     private val forumManager: ForumManager,
     briarExecutors: BriarExecutors,
     lifecycleManager: LifecycleManager,
@@ -95,6 +96,7 @@ class ForumViewModel @Inject constructor(
 
     fun selectGroup(groupItem: GroupItem) {
         _selectedGroupItem.value = groupItem
+        threadViewModel.setGroupItem(groupItem)
     }
 
     fun isSelected(groupId: GroupId) = _selectedGroupItem.value?.id == groupId
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/GroupConversationScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/GroupConversationScreen.kt
index 1eb22c9020..4fdb19682f 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/GroupConversationScreen.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/GroupConversationScreen.kt
@@ -41,7 +41,6 @@ import androidx.compose.material.Text
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.MoreVert
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment.Companion.BottomCenter
@@ -55,19 +54,16 @@ import org.briarproject.briar.desktop.contact.ContactDropDown.State.MAIN
 import org.briarproject.briar.desktop.ui.Constants.HEADER_SIZE
 import org.briarproject.briar.desktop.ui.HorizontalDivider
 import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
-import org.briarproject.briar.desktop.viewmodel.viewModel
 
 @Composable
 fun GroupConversationScreen(
-    groupItem: GroupItem,
-    viewModel: ThreadedConversationViewModel = viewModel(),
+    viewModel: ThreadedConversationViewModel,
 ) {
-    LaunchedEffect(groupItem) {
-        viewModel.setGroupItem(groupItem)
-    }
     Scaffold(
         topBar = {
-            GroupConversationHeader(groupItem) { viewModel.deleteGroup(groupItem) }
+            GroupConversationHeader(viewModel.groupItem) {
+                viewModel.deleteGroup(viewModel.groupItem)
+            }
         },
         content = { padding ->
             ThreadedConversationScreen(
@@ -79,7 +75,7 @@ fun GroupConversationScreen(
         },
         bottomBar = {
             GroupInputComposable(viewModel.selectedPost.value) { text ->
-                viewModel.createPost(groupItem, text, viewModel.selectedPost.value?.id)
+                viewModel.createPost(viewModel.groupItem, text, viewModel.selectedPost.value?.id)
             }
         }
     )
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 bea6fc19a3..c7acadc5ca 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
@@ -69,7 +69,8 @@ class ThreadedConversationViewModel @Inject constructor(
         private val LOG = getLogger(ThreadedConversationViewModel::class.java)
     }
 
-    private lateinit var groupItem: GroupItem
+    lateinit var groupItem: GroupItem
+        private set
 
     private val _posts = mutableStateOf<PostsState>(Loading)
     val posts = _posts.asState()
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt
index 45797f9d8f..bcb4353996 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt
@@ -26,11 +26,11 @@ import org.briarproject.briar.desktop.contact.ContactListViewModel
 import org.briarproject.briar.desktop.contact.add.remote.AddContactViewModel
 import org.briarproject.briar.desktop.conversation.ConversationViewModel
 import org.briarproject.briar.desktop.forums.ForumViewModel
-import org.briarproject.briar.desktop.forums.ThreadedConversationViewModel
 import org.briarproject.briar.desktop.introduction.IntroductionViewModel
 import org.briarproject.briar.desktop.login.StartupViewModel
 import org.briarproject.briar.desktop.navigation.SidebarViewModel
 import org.briarproject.briar.desktop.privategroups.PrivateGroupListViewModel
+import org.briarproject.briar.desktop.privategroups.ThreadedConversationViewModel
 import org.briarproject.briar.desktop.settings.SettingsViewModel
 import kotlin.reflect.KClass
 
-- 
GitLab