From 977d17586d856a2aa809c987640c39b0ca6135a3 Mon Sep 17 00:00:00 2001 From: ialokim <ialokim@mailbox.org> Date: Tue, 14 Mar 2023 22:53:41 +0100 Subject: [PATCH] rename package for common forum and privatgroup logic to threadedgroup also rename forums to forum --- .../conversation/ConversationViewModel.kt | 2 +- .../desktop/{forums => forum}/ForumItem.kt | 6 +-- .../{forums => forum}/ForumListViewModel.kt | 8 ++-- .../{forums => forum}/ForumPostReadEvent.kt | 4 +- .../desktop/{forums => forum}/ForumScreen.kt | 8 ++-- .../desktop/{forums => forum}/ForumStrings.kt | 6 +-- .../ForumConversationViewModel.kt | 8 ++-- .../conversation/ForumDropdownMenu.kt | 8 ++-- .../conversation/ForumPostItem.kt | 4 +- .../sharing/ForumInvitationSentEvent.kt | 2 +- .../ForumSharingActionDrawerContent.kt | 4 +- .../ForumSharingStatusDrawerContent.kt | 4 +- .../sharing/ForumSharingViewModel.kt | 2 +- .../desktop/privategroup/PrivateGroupItem.kt | 4 +- .../privategroup/PrivateGroupListViewModel.kt | 4 +- .../privategroup/PrivateGroupScreen.kt | 4 +- .../privategroup/PrivateGroupStrings.kt | 4 +- .../PrivateGroupConversationViewModel.kt | 4 +- .../conversation/PrivateGroupMessageItem.kt | 2 +- .../AddThreadedGroupDialog.kt} | 21 ++++++---- .../ThreadedGroupCircle.kt} | 6 +-- .../ThreadedGroupItem.kt} | 4 +- .../ThreadedGroupItemView.kt} | 34 +++++++-------- .../ThreadedGroupList.kt} | 26 ++++++------ .../ThreadedGroupListViewModel.kt} | 14 +++---- .../ThreadedGroupScreen.kt} | 28 ++++++------- .../ThreadedGroupStrings.kt} | 4 +- .../conversation/ThreadItem.kt | 2 +- .../conversation/ThreadItemView.kt | 4 +- .../ThreadedConversationViewModel.kt | 24 +++++------ .../ThreadedGroupConversationContent.kt} | 10 ++--- .../ThreadedGroupConversationInput.kt} | 8 ++-- .../ThreadedGroupConversationScreen.kt} | 42 +++++++++---------- .../ThreadedGroupConversationScreenState.kt} | 8 ++-- .../ThreadedGroupDropdownMenu.kt} | 6 +-- .../conversation/UnreadFabs.kt | 6 +-- .../briar/desktop/ui/MainScreen.kt | 2 +- .../briar/desktop/ui/MessageCounterImpl.kt | 2 +- .../desktop/viewmodel/ViewModelModule.kt | 4 +- 39 files changed, 174 insertions(+), 169 deletions(-) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/ForumItem.kt (92%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/ForumListViewModel.kt (91%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/ForumPostReadEvent.kt (91%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/ForumScreen.kt (84%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/ForumStrings.kt (94%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/conversation/ForumConversationViewModel.kt (94%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/conversation/ForumDropdownMenu.kt (89%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/conversation/ForumPostItem.kt (89%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/sharing/ForumInvitationSentEvent.kt (94%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/sharing/ForumSharingActionDrawerContent.kt (98%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/sharing/ForumSharingStatusDrawerContent.kt (97%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{forums => forum}/sharing/ForumSharingViewModel.kt (99%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/AddGroupDialog.kt => threadedgroup/AddThreadedGroupDialog.kt} (93%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/GroupCircle.kt => threadedgroup/ThreadedGroupCircle.kt} (93%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/GroupItem.kt => threadedgroup/ThreadedGroupItem.kt} (91%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/GroupItemView.kt => threadedgroup/ThreadedGroupItemView.kt} (81%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/GroupList.kt => threadedgroup/ThreadedGroupList.kt} (90%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/GroupListViewModel.kt => threadedgroup/ThreadedGroupListViewModel.kt} (90%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/GroupScreen.kt => threadedgroup/ThreadedGroupScreen.kt} (77%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/GroupStrings.kt => threadedgroup/ThreadedGroupStrings.kt} (94%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group => threadedgroup}/conversation/ThreadItem.kt (97%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group => threadedgroup}/conversation/ThreadItemView.kt (98%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group => threadedgroup}/conversation/ThreadedConversationViewModel.kt (85%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/conversation/ThreadedConversationScreen.kt => threadedgroup/conversation/ThreadedGroupConversationContent.kt} (93%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/conversation/ThreadedConversationInput.kt => threadedgroup/conversation/ThreadedGroupConversationInput.kt} (96%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/conversation/GroupConversationScreen.kt => threadedgroup/conversation/ThreadedGroupConversationScreen.kt} (85%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/conversation/ThreadedConversationScreenState.kt => threadedgroup/conversation/ThreadedGroupConversationScreenState.kt} (90%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group/conversation/GroupDropdownMenu.kt => threadedgroup/conversation/ThreadedGroupDropdownMenu.kt} (82%) rename briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/{group => threadedgroup}/conversation/UnreadFabs.kt (95%) diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt index 17e1975506..607730b4bb 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt @@ -64,7 +64,7 @@ import org.briarproject.briar.desktop.contact.ContactItem import org.briarproject.briar.desktop.contact.loadContactItem import org.briarproject.briar.desktop.conversation.ConversationRequestItem.RequestType.FORUM import org.briarproject.briar.desktop.conversation.ConversationRequestItem.RequestType.INTRODUCTION -import org.briarproject.briar.desktop.forums.sharing.ForumInvitationSentEvent +import org.briarproject.briar.desktop.forum.sharing.ForumInvitationSentEvent import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.utils.KLoggerUtils.e import org.briarproject.briar.desktop.utils.KLoggerUtils.i diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumItem.kt similarity index 92% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumItem.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumItem.kt index 22c555b23f..40c5c5e8f8 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumItem.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumItem.kt @@ -16,13 +16,13 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums +package org.briarproject.briar.desktop.forum import org.briarproject.bramble.api.sync.GroupId import org.briarproject.briar.api.client.MessageTracker import org.briarproject.briar.api.client.PostHeader import org.briarproject.briar.api.forum.Forum -import org.briarproject.briar.desktop.group.GroupItem +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupItem import kotlin.math.max data class ForumItem( @@ -30,7 +30,7 @@ data class ForumItem( override val msgCount: Int, override val unread: Int, override val timestamp: Long, -) : GroupItem { +) : ThreadedGroupItem { constructor(forum: Forum, groupCount: MessageTracker.GroupCount) : this( forum = forum, diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumListViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumListViewModel.kt similarity index 91% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumListViewModel.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumListViewModel.kt index 84d6b9b491..6dbdad4dbb 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumListViewModel.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumListViewModel.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums +package org.briarproject.briar.desktop.forum import androidx.compose.runtime.mutableStateListOf import mu.KotlinLogging @@ -30,8 +30,8 @@ import org.briarproject.bramble.api.sync.GroupId import org.briarproject.briar.api.client.PostHeader import org.briarproject.briar.api.forum.ForumManager import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent -import org.briarproject.briar.desktop.forums.conversation.ForumConversationViewModel -import org.briarproject.briar.desktop.group.GroupListViewModel +import org.briarproject.briar.desktop.forum.conversation.ForumConversationViewModel +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupListViewModel import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.utils.removeFirst import org.briarproject.briar.desktop.utils.replaceFirst @@ -45,7 +45,7 @@ class ForumListViewModel lifecycleManager: LifecycleManager, db: TransactionManager, eventBus: EventBus, -) : GroupListViewModel<ForumItem>(threadViewModel, briarExecutors, lifecycleManager, db, eventBus) { +) : ThreadedGroupListViewModel<ForumItem>(threadViewModel, briarExecutors, lifecycleManager, db, eventBus) { companion object { private val LOG = KotlinLogging.logger {} diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumPostReadEvent.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumPostReadEvent.kt similarity index 91% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumPostReadEvent.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumPostReadEvent.kt index 7d2656143f..f0da6e2e9c 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumPostReadEvent.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumPostReadEvent.kt @@ -1,6 +1,6 @@ /* * Briar Desktop - * Copyright (C) 2021-2022 The Briar Project + * Copyright (C) 2021-2023 The Briar Project * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums +package org.briarproject.briar.desktop.forum import org.briarproject.bramble.api.event.Event import org.briarproject.bramble.api.sync.GroupId 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/forum/ForumScreen.kt similarity index 84% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumScreen.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumScreen.kt index ffb232f1c0..803705e23d 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumScreen.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumScreen.kt @@ -16,17 +16,17 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums +package org.briarproject.briar.desktop.forum import androidx.compose.runtime.Composable -import org.briarproject.briar.desktop.forums.conversation.ForumDropdownMenu -import org.briarproject.briar.desktop.group.GroupScreen +import org.briarproject.briar.desktop.forum.conversation.ForumDropdownMenu +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupScreen import org.briarproject.briar.desktop.viewmodel.viewModel @Composable fun ForumScreen( viewModel: ForumListViewModel = viewModel(), -) = GroupScreen( +) = ThreadedGroupScreen( strings = ForumStrings, viewModel = viewModel, dropdownMenu = { forumSharingViewModel, expanded, onClose, onLeaveForumClick -> diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumStrings.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumStrings.kt similarity index 94% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumStrings.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumStrings.kt index f18ba114f9..4812d32eef 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumStrings.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumStrings.kt @@ -16,16 +16,16 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums +package org.briarproject.briar.desktop.forum import org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_NAME_LENGTH import org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH -import org.briarproject.briar.desktop.group.GroupStrings +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupStrings import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18nF import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18nP -object ForumStrings : GroupStrings( +object ForumStrings : ThreadedGroupStrings( listTitle = i18n("forum.search.title"), listDescription = i18n("access.forums.list"), addGroupTitle = i18n("forum.add.title"), diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumConversationViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumConversationViewModel.kt similarity index 94% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumConversationViewModel.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumConversationViewModel.kt index 2ceb8eef0e..75570a87a2 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumConversationViewModel.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumConversationViewModel.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums.conversation +package org.briarproject.briar.desktop.forum.conversation import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.DelicateCoroutinesApi @@ -38,9 +38,9 @@ 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.event.ForumPostReceivedEvent -import org.briarproject.briar.desktop.forums.ForumItem -import org.briarproject.briar.desktop.forums.sharing.ForumSharingViewModel -import org.briarproject.briar.desktop.group.conversation.ThreadedConversationViewModel +import org.briarproject.briar.desktop.forum.ForumItem +import org.briarproject.briar.desktop.forum.sharing.ForumSharingViewModel +import org.briarproject.briar.desktop.threadedgroup.conversation.ThreadedConversationViewModel import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.threading.UiExecutor import java.lang.Long.max diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumDropdownMenu.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumDropdownMenu.kt similarity index 89% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumDropdownMenu.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumDropdownMenu.kt index ae00c4015b..d4195d362f 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumDropdownMenu.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumDropdownMenu.kt @@ -16,16 +16,16 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums.conversation +package org.briarproject.briar.desktop.forum.conversation import androidx.compose.material.DropdownMenu import androidx.compose.material.DropdownMenuItem import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.runtime.Composable -import org.briarproject.briar.desktop.forums.sharing.ForumSharingActionDrawerContent -import org.briarproject.briar.desktop.forums.sharing.ForumSharingStatusDrawerContent -import org.briarproject.briar.desktop.forums.sharing.ForumSharingViewModel +import org.briarproject.briar.desktop.forum.sharing.ForumSharingActionDrawerContent +import org.briarproject.briar.desktop.forum.sharing.ForumSharingStatusDrawerContent +import org.briarproject.briar.desktop.forum.sharing.ForumSharingViewModel import org.briarproject.briar.desktop.ui.getInfoDrawerHandler import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumPostItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumPostItem.kt similarity index 89% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumPostItem.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumPostItem.kt index f9a5b8f2ce..009d842ed9 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/conversation/ForumPostItem.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumPostItem.kt @@ -16,10 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums.conversation +package org.briarproject.briar.desktop.forum.conversation import org.briarproject.briar.api.forum.ForumPostHeader -import org.briarproject.briar.desktop.group.conversation.ThreadItem +import org.briarproject.briar.desktop.threadedgroup.conversation.ThreadItem import javax.annotation.concurrent.NotThreadSafe @NotThreadSafe diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumInvitationSentEvent.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumInvitationSentEvent.kt similarity index 94% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumInvitationSentEvent.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumInvitationSentEvent.kt index 016dfd976f..1d090fb951 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumInvitationSentEvent.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumInvitationSentEvent.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums.sharing +package org.briarproject.briar.desktop.forum.sharing import org.briarproject.bramble.api.contact.ContactId import org.briarproject.bramble.api.event.Event diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingActionDrawerContent.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingActionDrawerContent.kt similarity index 98% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingActionDrawerContent.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingActionDrawerContent.kt index f4924ed795..d85a38c1a9 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingActionDrawerContent.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingActionDrawerContent.kt @@ -1,6 +1,6 @@ /* * Briar Desktop - * Copyright (C) 2021-2022 The Briar Project + * Copyright (C) 2021-2023 The Briar Project * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums.sharing +package org.briarproject.briar.desktop.forum.sharing import androidx.compose.foundation.layout.Arrangement.spacedBy import androidx.compose.foundation.layout.Box diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingStatusDrawerContent.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingStatusDrawerContent.kt similarity index 97% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingStatusDrawerContent.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingStatusDrawerContent.kt index c3c47e99b1..b289ffa916 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingStatusDrawerContent.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingStatusDrawerContent.kt @@ -1,6 +1,6 @@ /* * Briar Desktop - * Copyright (C) 2021-2022 The Briar Project + * Copyright (C) 2021-2023 The Briar Project * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums.sharing +package org.briarproject.briar.desktop.forum.sharing import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy import androidx.compose.foundation.layout.Box diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingViewModel.kt similarity index 99% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingViewModel.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingViewModel.kt index 03dc7a57be..cf041bf781 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/sharing/ForumSharingViewModel.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/sharing/ForumSharingViewModel.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.forums.sharing +package org.briarproject.briar.desktop.forum.sharing import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.mutableStateOf diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupItem.kt index 2f50b43eb7..fce9fc24ab 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupItem.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupItem.kt @@ -22,7 +22,7 @@ import org.briarproject.bramble.api.sync.GroupId import org.briarproject.briar.api.client.MessageTracker import org.briarproject.briar.api.client.PostHeader import org.briarproject.briar.api.privategroup.PrivateGroup -import org.briarproject.briar.desktop.group.GroupItem +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupItem import kotlin.math.max data class PrivateGroupItem( @@ -30,7 +30,7 @@ data class PrivateGroupItem( override val msgCount: Int, override val unread: Int, override val timestamp: Long, -) : GroupItem { +) : ThreadedGroupItem { constructor(privateGroup: PrivateGroup, groupCount: MessageTracker.GroupCount) : this( diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupListViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupListViewModel.kt index 410294a95a..5997082470 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupListViewModel.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupListViewModel.kt @@ -40,8 +40,8 @@ import org.briarproject.briar.api.privategroup.GroupMessageFactory import org.briarproject.briar.api.privategroup.PrivateGroupFactory import org.briarproject.briar.api.privategroup.PrivateGroupManager import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent -import org.briarproject.briar.desktop.group.GroupListViewModel import org.briarproject.briar.desktop.privategroup.conversation.PrivateGroupConversationViewModel +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupListViewModel import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.utils.removeFirst import org.briarproject.briar.desktop.utils.replaceFirst @@ -60,7 +60,7 @@ class PrivateGroupListViewModel lifecycleManager: LifecycleManager, db: TransactionManager, eventBus: EventBus, -) : GroupListViewModel<PrivateGroupItem>(threadViewModel, briarExecutors, lifecycleManager, db, eventBus) { +) : ThreadedGroupListViewModel<PrivateGroupItem>(threadViewModel, briarExecutors, lifecycleManager, db, eventBus) { override val clientId: ClientId = PrivateGroupManager.CLIENT_ID diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupScreen.kt index 568a7b7736..286b65482b 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupScreen.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupScreen.kt @@ -19,13 +19,13 @@ package org.briarproject.briar.desktop.privategroup import androidx.compose.runtime.Composable -import org.briarproject.briar.desktop.group.GroupScreen +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupScreen import org.briarproject.briar.desktop.viewmodel.viewModel @Composable fun PrivateGroupScreen( viewModel: PrivateGroupListViewModel = viewModel(), -) = GroupScreen( +) = ThreadedGroupScreen( strings = PrivateGroupStrings, viewModel = viewModel, dropdownMenu = { forumSharingViewModel, expanded, onClose, onLeaveForumClick -> diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupStrings.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupStrings.kt index 8ecc2adc07..0988825d78 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupStrings.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupStrings.kt @@ -20,12 +20,12 @@ package org.briarproject.briar.desktop.privategroup import org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH import org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_TEXT_LENGTH -import org.briarproject.briar.desktop.group.GroupStrings +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupStrings import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18nF import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18nP -object PrivateGroupStrings : GroupStrings( +object PrivateGroupStrings : ThreadedGroupStrings( listTitle = i18n("group.search.title"), listDescription = i18n("access.group.list"), addGroupTitle = i18n("group.add.title"), diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/conversation/PrivateGroupConversationViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/conversation/PrivateGroupConversationViewModel.kt index 396f05c875..593bac83d4 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/conversation/PrivateGroupConversationViewModel.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/conversation/PrivateGroupConversationViewModel.kt @@ -39,8 +39,8 @@ import org.briarproject.briar.api.client.MessageTracker import org.briarproject.briar.api.privategroup.GroupMessageFactory import org.briarproject.briar.api.privategroup.JoinMessageHeader import org.briarproject.briar.api.privategroup.PrivateGroupManager -import org.briarproject.briar.desktop.forums.sharing.ForumSharingViewModel -import org.briarproject.briar.desktop.group.conversation.ThreadedConversationViewModel +import org.briarproject.briar.desktop.forum.sharing.ForumSharingViewModel +import org.briarproject.briar.desktop.threadedgroup.conversation.ThreadedConversationViewModel import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.threading.UiExecutor import java.lang.Long.max diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/conversation/PrivateGroupMessageItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/conversation/PrivateGroupMessageItem.kt index efc450c460..546ff08f34 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/conversation/PrivateGroupMessageItem.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/conversation/PrivateGroupMessageItem.kt @@ -19,7 +19,7 @@ package org.briarproject.briar.desktop.privategroup.conversation import org.briarproject.briar.api.privategroup.GroupMessageHeader -import org.briarproject.briar.desktop.group.conversation.ThreadItem +import org.briarproject.briar.desktop.threadedgroup.conversation.ThreadItem import javax.annotation.concurrent.NotThreadSafe @NotThreadSafe diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/AddGroupDialog.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/AddThreadedGroupDialog.kt similarity index 93% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/AddGroupDialog.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/AddThreadedGroupDialog.kt index 7e8ec71b2d..f8cd80afc2 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/AddGroupDialog.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/AddThreadedGroupDialog.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group +package org.briarproject.briar.desktop.threadedgroup import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row @@ -50,7 +50,7 @@ import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.WindowPosition import androidx.compose.ui.window.rememberDialogState import org.briarproject.bramble.util.StringUtils.utf8IsTooLong -import org.briarproject.briar.desktop.forums.ForumStrings +import org.briarproject.briar.desktop.forum.ForumStrings import org.briarproject.briar.desktop.privategroup.PrivateGroupStrings import org.briarproject.briar.desktop.utils.AccessibilityUtils.description import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n @@ -61,7 +61,7 @@ fun main() = preview( "visible" to true, "forums" to true ) { - AddGroupDialog( + AddThreadedGroupDialog( strings = if (getBooleanParameter("forums")) ForumStrings else PrivateGroupStrings, visible = getBooleanParameter("visible"), onCreate = {}, @@ -70,8 +70,8 @@ fun main() = preview( } @Composable -fun AddGroupDialog( - strings: GroupStrings, +fun AddThreadedGroupDialog( + strings: ThreadedGroupStrings, visible: Boolean, onCreate: (String) -> Unit, onCancelButtonClicked: () -> Unit, @@ -110,7 +110,7 @@ fun AddGroupDialog( } }, content = { - AddGroupContent(name.value, onNameChanged, strings.addGroupHint, onCreate) + AddThreadedGroupContent(name.value, onNameChanged, strings.addGroupHint, onCreate) }, bottomBar = { OkCancelBottomBar( @@ -133,7 +133,12 @@ private fun isValidGroupName(name: String, maxLength: Int) = name.isNotBlank() && !utf8IsTooLong(name, maxLength) @Composable -fun AddGroupContent(name: String, onNameChanged: (String) -> Unit, description: String, onCreate: (String) -> Unit) { +private fun AddThreadedGroupContent( + name: String, + onNameChanged: (String) -> Unit, + description: String, + onCreate: (String) -> Unit, +) { val focusRequester = remember { FocusRequester() } OutlinedTextField( value = name, @@ -156,7 +161,7 @@ fun AddGroupContent(name: String, onNameChanged: (String) -> Unit, description: } @Composable -fun OkCancelBottomBar( +private fun OkCancelBottomBar( okButtonLabel: String, okButtonEnabled: Boolean = true, onOkButtonClicked: () -> Unit, diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupCircle.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupCircle.kt similarity index 93% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupCircle.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupCircle.kt index 599dd6770f..3c0f3ad0c4 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupCircle.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupCircle.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group +package org.briarproject.briar.desktop.threadedgroup import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -39,7 +39,7 @@ import org.briarproject.briar.desktop.theme.outline import org.briarproject.briar.desktop.utils.InternationalizationUtils.locale @Composable -fun GroupCircle(item: GroupItem, modifier: Modifier = Modifier) { +fun ThreadedGroupCircle(item: ThreadedGroupItem, modifier: Modifier = Modifier) { Box( contentAlignment = Center, modifier = modifier @@ -63,7 +63,7 @@ fun GroupCircle(item: GroupItem, modifier: Modifier = Modifier) { } } -fun GroupId.getBackgroundColor(): Color { +private fun GroupId.getBackgroundColor(): Color { return Color( red = bytes.getByte(0) * 3 / 4 + 96, green = bytes.getByte(1) * 3 / 4 + 96, diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupItem.kt similarity index 91% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupItem.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupItem.kt index 588cc76afe..2ec955692a 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupItem.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupItem.kt @@ -16,11 +16,11 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group +package org.briarproject.briar.desktop.threadedgroup import org.briarproject.bramble.api.sync.GroupId -interface GroupItem { +interface ThreadedGroupItem { val id: GroupId val name: String val msgCount: Int diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupItemView.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupItemView.kt similarity index 81% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupItemView.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupItemView.kt index fff90eb904..d4fdc7cba4 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupItemView.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupItemView.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group +package org.briarproject.briar.desktop.threadedgroup import androidx.compose.foundation.layout.Arrangement.SpaceBetween import androidx.compose.foundation.layout.Arrangement.spacedBy @@ -43,7 +43,7 @@ import androidx.compose.ui.semantics.text import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import org.briarproject.bramble.api.sync.GroupId -import org.briarproject.briar.desktop.forums.ForumStrings +import org.briarproject.briar.desktop.forum.ForumStrings import org.briarproject.briar.desktop.ui.NumberBadge import org.briarproject.briar.desktop.utils.PreviewUtils.preview import org.briarproject.briar.desktop.utils.TimeUtils.getFormattedTimestamp @@ -58,20 +58,20 @@ fun main() = preview( "unread" to 23, "timestamp" to Instant.now().toEpochMilli(), ) { - val item = object : GroupItem { + val item = object : ThreadedGroupItem { override val id: GroupId = GroupId(getRandomIdPersistent()) override val name: String = getStringParameter("name") override val msgCount: Int = getIntParameter("msgCount") override val unread: Int = getIntParameter("unread") override val timestamp: Long = getLongParameter("timestamp") } - GroupItemView(ForumStrings, item) + ThreadedGroupItemView(ForumStrings, item) } @Composable -fun GroupItemView( - strings: GroupStrings, - groupItem: GroupItem, +fun ThreadedGroupItemView( + strings: ThreadedGroupStrings, + threadedGroupItem: ThreadedGroupItem, modifier: Modifier = Modifier, ) = Row( horizontalArrangement = spacedBy(12.dp), @@ -80,20 +80,20 @@ fun GroupItemView( // allows content to be bottom-aligned .height(IntrinsicSize.Min) .semantics { - text = getDescription(strings, groupItem) + text = getDescription(strings, threadedGroupItem) }, ) { Box(Modifier.align(Top).padding(vertical = 8.dp)) { - GroupCircle(groupItem) + ThreadedGroupCircle(threadedGroupItem) NumberBadge( - num = groupItem.unread, + num = threadedGroupItem.unread, modifier = Modifier.align(TopEnd).offset(6.dp, (-6).dp) ) } - GroupItemViewInfo(strings, groupItem) + ThreadedGroupItemViewInfo(strings, threadedGroupItem) } -private fun getDescription(strings: GroupStrings, item: GroupItem) = buildBlankAnnotatedString { +private fun getDescription(strings: ThreadedGroupStrings, item: ThreadedGroupItem) = buildBlankAnnotatedString { append(item.name) if (item.unread > 0) appendCommaSeparated(strings.unreadCount(item.unread)) appendCommaSeparated(strings.messageCount(item.msgCount)) @@ -101,12 +101,12 @@ private fun getDescription(strings: GroupStrings, item: GroupItem) = buildBlankA } @Composable -private fun GroupItemViewInfo(strings: GroupStrings, groupItem: GroupItem) = Column( +private fun ThreadedGroupItemViewInfo(strings: ThreadedGroupStrings, threadedGroupItem: ThreadedGroupItem) = Column( horizontalAlignment = Start, ) { Spacer(Modifier.weight(1f, fill = true)) Text( - text = groupItem.name, + text = threadedGroupItem.name, style = MaterialTheme.typography.body1, maxLines = 3, overflow = TextOverflow.Ellipsis, @@ -117,12 +117,12 @@ private fun GroupItemViewInfo(strings: GroupStrings, groupItem: GroupItem) = Col modifier = Modifier.fillMaxWidth() ) { Text( - text = strings.messageCount(groupItem.msgCount), + text = strings.messageCount(threadedGroupItem.msgCount), style = MaterialTheme.typography.caption ) - if (groupItem.msgCount > 0) { + if (threadedGroupItem.msgCount > 0) { Text( - text = getFormattedTimestamp(groupItem.timestamp), + text = getFormattedTimestamp(threadedGroupItem.timestamp), style = MaterialTheme.typography.caption ) } diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupList.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupList.kt similarity index 90% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupList.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupList.kt index bd76669381..2da3f31ce4 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupList.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupList.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group +package org.briarproject.briar.desktop.threadedgroup import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -41,7 +41,7 @@ import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import org.briarproject.bramble.api.sync.GroupId -import org.briarproject.briar.desktop.forums.ForumStrings +import org.briarproject.briar.desktop.forum.ForumStrings import org.briarproject.briar.desktop.theme.surfaceVariant import org.briarproject.briar.desktop.ui.Constants.COLUMN_WIDTH import org.briarproject.briar.desktop.ui.Constants.HEADER_SIZE @@ -55,7 +55,7 @@ import java.time.Instant fun main() = preview { val list = remember { listOf( - object : GroupItem { + object : ThreadedGroupItem { override val id: GroupId = GroupId(getRandomId()) override val name: String = "This is a test forum! This is a test forum! This is a test forum! This is a test forum!" @@ -63,14 +63,14 @@ fun main() = preview { override val unread: Int = 23 override val timestamp: Long = (Instant.now().minusSeconds(300)).toEpochMilli() }, - object : GroupItem { + object : ThreadedGroupItem { override val id: GroupId = GroupId(getRandomId()) override val name: String = "Newly added forum" override val msgCount: Int = 0 override val unread: Int = 0 override val timestamp: Long = (Instant.now()).toEpochMilli() }, - object : GroupItem { + object : ThreadedGroupItem { override val id: GroupId = GroupId(getRandomId()) override val name: String = "Old forum" override val msgCount: Int = 123 @@ -80,7 +80,7 @@ fun main() = preview { ) } - val (selected, setSelected) = remember { mutableStateOf<GroupItem?>(null) } + val (selected, setSelected) = remember { mutableStateOf<ThreadedGroupItem?>(null) } val (filterBy, setFilterBy) = remember { mutableStateOf("") } val filteredList = remember(filterBy) { @@ -89,7 +89,7 @@ fun main() = preview { }.sortedByDescending { it.timestamp } } - GroupList( + ThreadedGroupList( strings = ForumStrings, list = filteredList, isSelected = { selected?.id == it }, @@ -101,13 +101,13 @@ fun main() = preview { } @Composable -fun GroupList( - strings: GroupStrings, - list: List<GroupItem>, +fun ThreadedGroupList( + strings: ThreadedGroupStrings, + list: List<ThreadedGroupItem>, isSelected: (GroupId) -> Boolean, filterBy: String, onFilterSet: (String) -> Unit, - onGroupItemSelected: (GroupItem) -> Unit, + onGroupItemSelected: (ThreadedGroupItem) -> Unit, onAddButtonClicked: () -> Unit, ) = Column( modifier = Modifier.fillMaxHeight().width(COLUMN_WIDTH).background(MaterialTheme.colors.surfaceVariant), @@ -143,9 +143,9 @@ fun GroupList( // let divider start at horizontal position of text dividerOffsetFromStart = (16 + 36 + 12).dp, ) { - GroupItemView( + ThreadedGroupItemView( strings = strings, - groupItem = item, + threadedGroupItem = item, modifier = Modifier .heightIn(min = HEADER_SIZE) .fillMaxWidth() diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupListViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupListViewModel.kt similarity index 90% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupListViewModel.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupListViewModel.kt index 906a7c8ad7..e404bee0fe 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupListViewModel.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupListViewModel.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group +package org.briarproject.briar.desktop.threadedgroup import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.mutableStateOf @@ -32,13 +32,13 @@ 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.client.PostHeader -import org.briarproject.briar.desktop.group.conversation.ThreadedConversationViewModel +import org.briarproject.briar.desktop.threadedgroup.conversation.ThreadedConversationViewModel import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.utils.clearAndAddAll import org.briarproject.briar.desktop.viewmodel.EventListenerDbViewModel import org.briarproject.briar.desktop.viewmodel.asState -abstract class GroupListViewModel<T : GroupItem>( +abstract class ThreadedGroupListViewModel<T : ThreadedGroupItem>( val threadViewModel: ThreadedConversationViewModel, briarExecutors: BriarExecutors, lifecycleManager: LifecycleManager, @@ -127,10 +127,10 @@ abstract class GroupListViewModel<T : GroupItem>( protected abstract fun addOwnMessage(header: PostHeader) - fun selectGroup(groupItem: GroupItem) { - if (_selectedGroupId.value == groupItem.id) return - _selectedGroupId.value = groupItem.id - threadViewModel.setGroupItem(groupItem, this::addOwnMessage) + fun selectGroup(threadedGroupItem: ThreadedGroupItem) { + if (_selectedGroupId.value == threadedGroupItem.id) return + _selectedGroupId.value = threadedGroupItem.id + threadViewModel.setGroupItem(threadedGroupItem, this::addOwnMessage) } fun isSelected(groupId: GroupId) = _selectedGroupId.value == groupId diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupScreen.kt similarity index 77% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupScreen.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupScreen.kt index 53c37dc6dd..2c5676181e 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupScreen.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupScreen.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group +package org.briarproject.briar.desktop.threadedgroup import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -32,20 +32,20 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import org.briarproject.briar.desktop.conversation.Explainer -import org.briarproject.briar.desktop.group.conversation.GroupConversationScreen -import org.briarproject.briar.desktop.group.conversation.GroupDropdownMenu +import org.briarproject.briar.desktop.threadedgroup.conversation.ThreadedGroupConversationScreen +import org.briarproject.briar.desktop.threadedgroup.conversation.ThreadedGroupDropdownMenu import org.briarproject.briar.desktop.ui.ColoredIconButton import org.briarproject.briar.desktop.ui.VerticalDivider import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n @Composable -fun <T : GroupItem> GroupScreen( - strings: GroupStrings, - viewModel: GroupListViewModel<T>, - dropdownMenu: GroupDropdownMenu, +fun <T : ThreadedGroupItem> ThreadedGroupScreen( + strings: ThreadedGroupStrings, + viewModel: ThreadedGroupListViewModel<T>, + dropdownMenu: ThreadedGroupDropdownMenu, ) { var addDialogVisible by remember { mutableStateOf(false) } - AddGroupDialog( + AddThreadedGroupDialog( strings = strings, visible = addDialogVisible, onCreate = { name -> @@ -56,10 +56,10 @@ fun <T : GroupItem> GroupScreen( ) if (viewModel.noGroupsYet.value) { - NoGroupsYet(strings) { addDialogVisible = true } + NoThreadedGroupsYet(strings) { addDialogVisible = true } } else { Row(modifier = Modifier.fillMaxWidth()) { - GroupList( + ThreadedGroupList( strings = strings, list = viewModel.list.value, isSelected = viewModel::isSelected, @@ -71,9 +71,9 @@ fun <T : GroupItem> GroupScreen( VerticalDivider() Column(modifier = Modifier.weight(1f).fillMaxHeight()) { if (viewModel.selectedGroupId.value == null) { - NoGroupSelected(strings) + NoThreadedGroupSelected(strings) } else { - GroupConversationScreen(strings, viewModel.threadViewModel, dropdownMenu) + ThreadedGroupConversationScreen(strings, viewModel.threadViewModel, dropdownMenu) } } } @@ -81,7 +81,7 @@ fun <T : GroupItem> GroupScreen( } @Composable -fun NoGroupsYet(strings: GroupStrings, onAdd: () -> Unit) = Explainer( +private fun NoThreadedGroupsYet(strings: ThreadedGroupStrings, onAdd: () -> Unit) = Explainer( headline = i18n("welcome.title"), text = strings.noGroupsYet, ) { @@ -94,7 +94,7 @@ fun NoGroupsYet(strings: GroupStrings, onAdd: () -> Unit) = Explainer( } @Composable -fun NoGroupSelected(strings: GroupStrings) = Explainer( +private fun NoThreadedGroupSelected(strings: ThreadedGroupStrings) = Explainer( headline = strings.noGroupSelectedTitle, text = strings.noGroupSelectedText, ) diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupStrings.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupStrings.kt similarity index 94% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupStrings.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupStrings.kt index 1f10a44825..f1cec8e35d 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/GroupStrings.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupStrings.kt @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group +package org.briarproject.briar.desktop.threadedgroup -abstract class GroupStrings( +abstract class ThreadedGroupStrings( val listTitle: String, val listDescription: String, val addGroupTitle: String, diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadItem.kt similarity index 97% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadItem.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadItem.kt index 7ad139c531..8456139768 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadItem.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadItem.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import org.briarproject.bramble.api.identity.Author import org.briarproject.bramble.api.sync.MessageId diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadItemView.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadItemView.kt similarity index 98% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadItemView.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadItemView.kt index ac4e489a5c..64cc1ec225 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadItemView.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadItemView.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.ExperimentalFoundationApi @@ -53,7 +53,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES import org.briarproject.briar.desktop.contact.ProfileCircle -import org.briarproject.briar.desktop.forums.conversation.ForumPostItem +import org.briarproject.briar.desktop.forum.conversation.ForumPostItem import org.briarproject.briar.desktop.theme.Blue500 import org.briarproject.briar.desktop.theme.divider import org.briarproject.briar.desktop.ui.Constants.COLUMN_WIDTH diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedConversationViewModel.kt similarity index 85% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationViewModel.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedConversationViewModel.kt index f96815a40c..b14b6456b4 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationViewModel.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedConversationViewModel.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import androidx.compose.runtime.mutableStateOf import kotlinx.coroutines.Job @@ -29,9 +29,9 @@ import org.briarproject.bramble.api.sync.GroupId import org.briarproject.bramble.api.sync.MessageId import org.briarproject.briar.api.client.PostHeader import org.briarproject.briar.client.MessageTreeImpl -import org.briarproject.briar.desktop.forums.ForumPostReadEvent -import org.briarproject.briar.desktop.forums.sharing.ForumSharingViewModel -import org.briarproject.briar.desktop.group.GroupItem +import org.briarproject.briar.desktop.forum.ForumPostReadEvent +import org.briarproject.briar.desktop.forum.sharing.ForumSharingViewModel +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupItem import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.threading.UiExecutor import org.briarproject.briar.desktop.viewmodel.EventListenerDbViewModel @@ -45,24 +45,24 @@ abstract class ThreadedConversationViewModel( private val eventBus: EventBus, ) : EventListenerDbViewModel(briarExecutors, lifecycleManager, db, eventBus) { - private val _groupItem = mutableStateOf<GroupItem?>(null) - val groupItem = _groupItem.asState() + private val _threadedGroupItem = mutableStateOf<ThreadedGroupItem?>(null) + val groupItem = _threadedGroupItem.asState() protected lateinit var onThreadItemLocallyAdded: (header: PostHeader) -> Unit - private val _state = mutableStateOf<ThreadedConversationScreenState>(Loading) + private val _state = mutableStateOf<ThreadedGroupConversationScreenState>(Loading) val state = _state.asState() private val _selectedThreadItem = mutableStateOf<ThreadItem?>(null) val selectedThreadItem = _selectedThreadItem.asState() @UiExecutor - fun setGroupItem(groupItem: GroupItem, onThreadItemLocallyAdded: (header: PostHeader) -> Unit) { + fun setGroupItem(threadedGroupItem: ThreadedGroupItem, onThreadItemLocallyAdded: (header: PostHeader) -> Unit) { this.onThreadItemLocallyAdded = onThreadItemLocallyAdded - _groupItem.value = groupItem + _threadedGroupItem.value = threadedGroupItem _selectedThreadItem.value = null - forumSharingViewModel.setGroupId(groupItem.id) - loadThreadItems(groupItem.id) + forumSharingViewModel.setGroupId(threadedGroupItem.id) + loadThreadItems(threadedGroupItem.id) } override fun onInit() { @@ -119,7 +119,7 @@ abstract class ThreadedConversationViewModel( item.id } ?: emptyList() - val groupId = _groupItem.value?.id + val groupId = _threadedGroupItem.value?.id if (readIds.isNotEmpty() && groupId != null) { runOnDbThread { readIds.forEach { id -> diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationContent.kt similarity index 93% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationScreen.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationContent.kt index d1fc5090fa..5b2998eeaa 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationScreen.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationContent.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import androidx.compose.foundation.VerticalScrollbar import androidx.compose.foundation.layout.Box @@ -36,14 +36,14 @@ import androidx.compose.ui.unit.dp import kotlinx.coroutines.delay import org.briarproject.bramble.api.sync.MessageId import org.briarproject.briar.desktop.conversation.reallyVisibleItemsInfo -import org.briarproject.briar.desktop.group.GroupStrings +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupStrings import org.briarproject.briar.desktop.ui.Loader import org.briarproject.briar.desktop.ui.isWindowFocused @Composable -fun ThreadedConversationScreen( - strings: GroupStrings, - state: ThreadedConversationScreenState, +fun ThreadedGroupConversationContent( + strings: ThreadedGroupStrings, + state: ThreadedGroupConversationScreenState, selectedThreadItem: ThreadItem?, onThreadItemSelected: (ThreadItem) -> Unit, onThreadItemsVisible: (List<MessageId>) -> Unit, diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationInput.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationInput.kt similarity index 96% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationInput.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationInput.kt index 91b1b2d2cd..89b77665cb 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationInput.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationInput.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -45,17 +45,17 @@ import androidx.compose.ui.input.pointer.PointerIconDefaults import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.unit.dp import org.briarproject.bramble.util.StringUtils.utf8IsTooLong -import org.briarproject.briar.desktop.group.GroupStrings import org.briarproject.briar.desktop.theme.divider import org.briarproject.briar.desktop.theme.sendButton +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupStrings import org.briarproject.briar.desktop.ui.HorizontalDivider import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n import org.briarproject.briar.desktop.utils.StringUtils.takeUtf8 @Composable @OptIn(ExperimentalComposeUiApi::class) -fun ThreadedConversationInput( - strings: GroupStrings, +fun ThreadedGroupConversationInput( + strings: ThreadedGroupStrings, selectedThreadItem: ThreadItem?, onReplyClosed: () -> Unit, onSend: (String) -> Unit, diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/GroupConversationScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationScreen.kt similarity index 85% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/GroupConversationScreen.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationScreen.kt index 6e19d0db82..6f5422be11 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/GroupConversationScreen.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationScreen.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import androidx.compose.foundation.layout.Arrangement.SpaceBetween import androidx.compose.foundation.layout.Arrangement.spacedBy @@ -51,26 +51,26 @@ import androidx.compose.ui.text.style.TextOverflow.Companion.Ellipsis import androidx.compose.ui.unit.dp import org.briarproject.briar.desktop.contact.ContactDropDown.State.CLOSED import org.briarproject.briar.desktop.contact.ContactDropDown.State.MAIN -import org.briarproject.briar.desktop.forums.sharing.ForumSharingViewModel -import org.briarproject.briar.desktop.group.GroupCircle -import org.briarproject.briar.desktop.group.GroupItem -import org.briarproject.briar.desktop.group.GroupStrings +import org.briarproject.briar.desktop.forum.sharing.ForumSharingViewModel +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupCircle +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupItem +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupStrings import org.briarproject.briar.desktop.ui.Constants.HEADER_SIZE import org.briarproject.briar.desktop.ui.HorizontalDivider import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n @Composable -fun GroupConversationScreen( - strings: GroupStrings, +fun ThreadedGroupConversationScreen( + strings: ThreadedGroupStrings, viewModel: ThreadedConversationViewModel, - dropdownMenu: GroupDropdownMenu, + dropdownMenu: ThreadedGroupDropdownMenu, ) { Scaffold( topBar = { viewModel.groupItem.value?.let { groupItem -> - GroupConversationHeader( + ThreadedGroupConversationHeader( strings = strings, - groupItem = groupItem, + threadedGroupItem = groupItem, forumSharingViewModel = viewModel.forumSharingViewModel, onGroupDelete = viewModel::deleteGroup, dropdownMenu = dropdownMenu, @@ -78,7 +78,7 @@ fun GroupConversationScreen( } }, content = { padding -> - ThreadedConversationScreen( + ThreadedGroupConversationContent( strings = strings, state = viewModel.state.value, selectedThreadItem = viewModel.selectedThreadItem.value, @@ -89,7 +89,7 @@ fun GroupConversationScreen( }, bottomBar = { val onCloseReply = { viewModel.selectThreadItem(null) } - ThreadedConversationInput(strings, viewModel.selectedThreadItem.value, onCloseReply) { text -> + ThreadedGroupConversationInput(strings, viewModel.selectedThreadItem.value, onCloseReply) { text -> viewModel.createThreadItem(text) } } @@ -97,12 +97,12 @@ fun GroupConversationScreen( } @Composable -private fun GroupConversationHeader( - strings: GroupStrings, - groupItem: GroupItem, +private fun ThreadedGroupConversationHeader( + strings: ThreadedGroupStrings, + threadedGroupItem: ThreadedGroupItem, forumSharingViewModel: ForumSharingViewModel, onGroupDelete: () -> Unit, - dropdownMenu: GroupDropdownMenu, + dropdownMenu: ThreadedGroupDropdownMenu, ) { val deleteGroupDialogVisible = remember { mutableStateOf(false) } val menuState = remember { mutableStateOf(CLOSED) } @@ -120,11 +120,11 @@ private fun GroupConversationHeader( horizontalArrangement = spacedBy(12.dp), verticalAlignment = CenterVertically ) { - GroupCircle(groupItem) + ThreadedGroupCircle(threadedGroupItem) Column { Text( modifier = Modifier, - text = groupItem.name, + text = threadedGroupItem.name, maxLines = 2, overflow = Ellipsis, style = MaterialTheme.typography.h2, @@ -151,7 +151,7 @@ private fun GroupConversationHeader( HorizontalDivider(modifier = Modifier.align(BottomCenter)) } if (deleteGroupDialogVisible.value) { - DeleteGroupDialog( + DeleteThreadedGroupDialog( strings = strings, close = { deleteGroupDialogVisible.value = false }, onDelete = onGroupDelete, @@ -161,8 +161,8 @@ private fun GroupConversationHeader( @Composable @OptIn(ExperimentalMaterialApi::class) -private fun DeleteGroupDialog( - strings: GroupStrings, +private fun DeleteThreadedGroupDialog( + strings: ThreadedGroupStrings, close: () -> Unit, onDelete: () -> Unit = {}, ) { diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationScreenState.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationScreenState.kt similarity index 90% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationScreenState.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationScreenState.kt index 1f2f870a7b..26da505ae6 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/ThreadedConversationScreenState.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupConversationScreenState.kt @@ -16,18 +16,18 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import org.briarproject.bramble.api.sync.MessageId import org.briarproject.briar.client.MessageTreeImpl import org.briarproject.briar.desktop.threading.UiExecutor -sealed class ThreadedConversationScreenState -object Loading : ThreadedConversationScreenState() +sealed class ThreadedGroupConversationScreenState +object Loading : ThreadedGroupConversationScreenState() class Loaded( val messageTree: MessageTreeImpl<ThreadItem>, val scrollTo: MessageId? = null, -) : ThreadedConversationScreenState() { +) : ThreadedGroupConversationScreenState() { val posts: List<ThreadItem> = messageTree.depthFirstOrder() @UiExecutor diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/GroupDropdownMenu.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupDropdownMenu.kt similarity index 82% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/GroupDropdownMenu.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupDropdownMenu.kt index 9f18452773..0e567fc9f5 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/GroupDropdownMenu.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/ThreadedGroupDropdownMenu.kt @@ -16,12 +16,12 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import androidx.compose.runtime.Composable -import org.briarproject.briar.desktop.forums.sharing.ForumSharingViewModel +import org.briarproject.briar.desktop.forum.sharing.ForumSharingViewModel -typealias GroupDropdownMenu = @Composable ( +typealias ThreadedGroupDropdownMenu = @Composable ( forumSharingViewModel: ForumSharingViewModel, expanded: Boolean, onClose: () -> Unit, diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/UnreadFabs.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/UnreadFabs.kt similarity index 95% rename from briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/UnreadFabs.kt rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/UnreadFabs.kt index b3e1dc3710..0f006388eb 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/group/conversation/UnreadFabs.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/conversation/UnreadFabs.kt @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -package org.briarproject.briar.desktop.group.conversation +package org.briarproject.briar.desktop.threadedgroup.conversation import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.Box @@ -38,13 +38,13 @@ import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import org.briarproject.briar.desktop.conversation.firstReallyVisibleItemIndex import org.briarproject.briar.desktop.conversation.lastReallyVisibleItemIndex -import org.briarproject.briar.desktop.group.GroupStrings import org.briarproject.briar.desktop.theme.ChevronDown import org.briarproject.briar.desktop.theme.ChevronUp +import org.briarproject.briar.desktop.threadedgroup.ThreadedGroupStrings import org.briarproject.briar.desktop.ui.NumberBadge @Composable -fun BoxScope.UnreadFabs(strings: GroupStrings, scrollState: LazyListState, postsState: Loaded) { +fun BoxScope.UnreadFabs(strings: ThreadedGroupStrings, scrollState: LazyListState, postsState: Loaded) { val coroutineScope = rememberCoroutineScope() // remember first really visible item index based on scroll offset diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt index bd2ca81b88..b1b37c56c4 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt @@ -28,7 +28,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.runtime.staticCompositionLocalOf import org.briarproject.briar.desktop.conversation.PrivateMessageScreen -import org.briarproject.briar.desktop.forums.ForumScreen +import org.briarproject.briar.desktop.forum.ForumScreen import org.briarproject.briar.desktop.mailbox.MailboxScreen import org.briarproject.briar.desktop.navigation.BriarSidebar import org.briarproject.briar.desktop.navigation.SidebarViewModel diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounterImpl.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounterImpl.kt index fb38662041..876ec358b2 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounterImpl.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounterImpl.kt @@ -33,7 +33,7 @@ import org.briarproject.briar.api.conversation.event.ConversationMessageReceived import org.briarproject.briar.api.forum.ForumManager import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent import org.briarproject.briar.desktop.conversation.ConversationMessagesReadEvent -import org.briarproject.briar.desktop.forums.ForumPostReadEvent +import org.briarproject.briar.desktop.forum.ForumPostReadEvent import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.threading.UiExecutor import org.briarproject.briar.desktop.ui.MessageCounterDataType.Forum 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 f3f1c99d07..244409ecf8 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 @@ -25,8 +25,8 @@ import dagger.multibindings.IntoMap 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.ForumListViewModel -import org.briarproject.briar.desktop.forums.sharing.ForumSharingViewModel +import org.briarproject.briar.desktop.forum.ForumListViewModel +import org.briarproject.briar.desktop.forum.sharing.ForumSharingViewModel import org.briarproject.briar.desktop.introduction.IntroductionViewModel import org.briarproject.briar.desktop.login.StartupViewModel import org.briarproject.briar.desktop.mailbox.MailboxViewModel -- GitLab