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 11754834928551376dfb16d12dfdba3769b692cd..e38203b3afec8f3ea14023a6b7ec7dc2702a0935 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 9b05d6db6c3a5fa993418985a3c86c5903c5b841..2fbe3812afd437c8bf8b47701e7f3c3d1717b688 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 1eb22c902051067fd90df8c7943bfa6934aaaa14..4fdb19682f5dacb7a244f92663919b22fc03489c 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 bea6fc19a3b9cb9c14b23952b519684b333b8cc6..c7acadc5ca78df3860a897d17c6a15a16f55dc9b 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 45797f9d8fa321854e7ce730e39788cccdf0dc85..bcb43539967d35b874c42033ecf5b643927ed529 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