diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumsScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumsScreen.kt index 77f448ddf8fe2cf9b6b89081d4f918d9020ed666..2bb44a4f1b975aeb63abc50f965c1501585a1298 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumsScreen.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forums/ForumsScreen.kt @@ -22,33 +22,62 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.AddComment import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import org.briarproject.briar.desktop.conversation.Explainer +import org.briarproject.briar.desktop.ui.ColoredIconButton import org.briarproject.briar.desktop.ui.UiPlaceholder import org.briarproject.briar.desktop.ui.VerticalDivider +import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n import org.briarproject.briar.desktop.viewmodel.viewModel @Composable fun ForumsScreen( viewModel: ForumsViewModel = viewModel(), ) { - Row(modifier = Modifier.fillMaxWidth()) { - ForumsList( - list = viewModel.groupList, - isSelected = viewModel::isSelected, - filterBy = viewModel.filterBy, - onFilterSet = viewModel::setFilterBy, - onGroupIdSelected = viewModel::selectGroup, - onAddButtonClicked = {}, - ) - VerticalDivider() - Column(modifier = Modifier.weight(1f).fillMaxHeight()) { - val id = viewModel.selectedGroupId.value - if (id != null) { - UiPlaceholder() - } else { - UiPlaceholder() + if (viewModel.groupList.value.isEmpty()) { + NoForumsYet {} + } else { + Row(modifier = Modifier.fillMaxWidth()) { + ForumsList( + list = viewModel.groupList, + isSelected = viewModel::isSelected, + filterBy = viewModel.filterBy, + onFilterSet = viewModel::setFilterBy, + onGroupIdSelected = viewModel::selectGroup, + onAddButtonClicked = {}, + ) + VerticalDivider() + Column(modifier = Modifier.weight(1f).fillMaxHeight()) { + val id = viewModel.selectedGroupId.value + if (id == null) { + NoForumSelected() + } else { + UiPlaceholder() + } } } } } + +@Composable +fun NoForumsYet(onContactAdd: () -> Unit) = Explainer( + headline = i18n("welcome.title"), + text = i18n("forum.empty_state.text"), +) { + ColoredIconButton( + icon = Icons.Filled.AddComment, + iconSize = 20.dp, + contentDescription = i18n("access.forums.add"), + onClick = onContactAdd, + ) +} + +@Composable +fun NoForumSelected() = Explainer( + headline = i18n("forum.none_selected.title"), + text = i18n("forum.none_selected.hint"), +) diff --git a/briar-desktop/src/main/resources/strings/BriarDesktop.properties b/briar-desktop/src/main/resources/strings/BriarDesktop.properties index 47f782afa9cbb2ce90d4da10f13541003588c5c2..1ffc70901b0f2defbc2419319acb3b2c744b2290 100644 --- a/briar-desktop/src/main/resources/strings/BriarDesktop.properties +++ b/briar-desktop/src/main/resources/strings/BriarDesktop.properties @@ -58,6 +58,7 @@ access.settings.currently_disabled=Currently disabled access.settings.click_to_toggle_notifications=Click to toggle notifications access.return_to_previous_screen=Return to previous screen +access.forums.add=Add forum # Contacts contacts.none_selected.title=No contact selected @@ -102,6 +103,9 @@ conversation.change.alias.dialog.description=Please enter a new name for this co # Forums forum.search.title=Forums +forum.empty_state.text=You don't have any forums yet. Tap the + icon to add a forum: +forum.none_selected.title=No forum selected +forum.none_selected.hint=Select a forum to start chatting group.card.posts={0, plural, one {{0} post} other {{0} posts}} # Private Groups