diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt b/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt index e73b89b0369c419d6a3f65a9ca4580572c38bd6d..952e28a1eede255667ffc54c452725b94147373d 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt @@ -9,17 +9,21 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import org.briarproject.briar.desktop.contact.ContactList import org.briarproject.briar.desktop.contact.ContactListViewModel +import org.briarproject.briar.desktop.contact.PendingContactIdWrapper import org.briarproject.briar.desktop.contact.RealContactIdWrapper import org.briarproject.briar.desktop.ui.BriarLogo +import org.briarproject.briar.desktop.ui.Constants.PARAGRAPH_WIDTH import org.briarproject.briar.desktop.ui.VerticalDivider import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n import org.briarproject.briar.desktop.viewmodel.viewModel @@ -39,17 +43,34 @@ fun PrivateMessageScreen( VerticalDivider() Column(modifier = Modifier.weight(1f).fillMaxHeight()) { val id = viewModel.selectedContactId.value - if (id != null && id is RealContactIdWrapper) { - ConversationScreen(id.contactId) - } else { + if (id == null) { NoContactSelected() + } else when (id) { + is RealContactIdWrapper -> { + ConversationScreen(id.contactId) + } + is PendingContactIdWrapper -> { + PendingContactSelected() + } } } } } @Composable -fun NoContactSelected() = Surface(color = MaterialTheme.colors.background) { +fun NoContactSelected() = Explainer( + headline = i18n("contacts.none_selected.title"), + content = i18n("contacts.none_selected.hint"), +) + +@Composable +fun PendingContactSelected() = Explainer( + headline = i18n("contacts.pending_selected.title"), + content = i18n("contacts.pending_selected.hint"), +) + +@Composable +fun Explainer(headline: String, content: String) = Surface(color = MaterialTheme.colors.background) { Column( modifier = Modifier.padding(16.dp).fillMaxSize(), verticalArrangement = Arrangement.Center, @@ -57,14 +78,14 @@ fun NoContactSelected() = Surface(color = MaterialTheme.colors.background) { ) { BriarLogo(modifier = Modifier.size(200.dp)) Text( - text = i18n("contacts.none_selected.title"), + text = headline, modifier = Modifier.padding(PaddingValues(top = 15.dp, bottom = 5.dp)), style = MaterialTheme.typography.h5 ) Text( - text = i18n("contacts.none_selected.hint"), - modifier = Modifier.padding(PaddingValues(top = 5.dp, bottom = 15.dp)), - style = MaterialTheme.typography.body2 + text = content, + modifier = Modifier.padding(PaddingValues(top = 5.dp, bottom = 15.dp)).widthIn(max = PARAGRAPH_WIDTH), + style = MaterialTheme.typography.body2.copy(textAlign = TextAlign.Center) ) } } diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt b/src/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt index ed1606d68e98f309dba6eeb540d07590a354941d..abd377d359a150bd7fe05434ddb71a84d44ecefd 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt @@ -5,4 +5,5 @@ import androidx.compose.ui.unit.dp object Constants { val HEADER_SIZE = 56.dp val COLUMN_WIDTH = 275.dp + val PARAGRAPH_WIDTH = 540.dp } diff --git a/src/main/resources/strings/BriarDesktop.properties b/src/main/resources/strings/BriarDesktop.properties index 6ff5ede4dbf037f27b9d42e916a8a2495341e08d..c122151cba7199c3135bbfb368bb54b8742dd43b 100644 --- a/src/main/resources/strings/BriarDesktop.properties +++ b/src/main/resources/strings/BriarDesktop.properties @@ -16,6 +16,8 @@ access.swap=Icon showing errors between two contacts # Contacts contacts.none_selected.title=No contact selected contacts.none_selected.hint=Select a contact to start chatting +contacts.pending_selected.title=Pending contact selected +contacts.pending_selected.hint=You need to wait until the process of adding each other as contacts has finished before you can start chatting. contacts.card.nothing=No messages. contacts.dropdown.connections=Connections contacts.dropdown.connections.title=Connections