diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItemViewSmall.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItemViewSmall.kt index a16369c266a2830451932f53a21297e7f9cf37b3..b602a5127b09693394e518931b2dc861c6b668ad 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItemViewSmall.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItemViewSmall.kt @@ -88,7 +88,6 @@ fun ContactItemViewSmall( horizontalArrangement = spacedBy(8.dp), modifier = Modifier.weight(1f, fill = true), ) { - // TODO cache profile images, if available ProfileCircle(27.dp, contactItem) Text( modifier = Modifier.weight(1f, fill = false), diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionDrawerContent.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionDrawerContent.kt index 10d53b60f28a104be333792a7cfe8aa010f0a049..8c55c3502fb81e3544602f7c69e2dcd2673498f6 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionDrawerContent.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionDrawerContent.kt @@ -18,8 +18,9 @@ package org.briarproject.briar.desktop.introduction -import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Arrangement.spacedBy import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth @@ -88,30 +89,13 @@ fun IntroductionDrawerContent( Box(Modifier.fillMaxWidth().weight(1f)) { if (viewModel.contactList.value.isEmpty()) { // todo: this might be shown to the user while the list is still loading - Text( - text = i18n("introduction.state.no_contacts"), - style = MaterialTheme.typography.body1, - modifier = Modifier.padding(8.dp).align(Center), - ) + EmptyList() } else { - VerticallyScrollableArea { scrollState -> - LazyColumn(state = scrollState) { - items( - items = viewModel.contactList.value, - key = { it.contactItem.id }, - ) { introductionContactItem -> - IntroductionListItemView( - introductionContactItem = introductionContactItem, - selected = viewModel.isSecondContactSelected(introductionContactItem), - onToggle = { viewModel.toggleSecondContact(introductionContactItem) }, - ) - } - } - } + List(viewModel) } } Column( - verticalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = spacedBy(8.dp), modifier = Modifier.fillMaxWidth().padding(8.dp), ) { val makeIntroduction = { @@ -144,6 +128,29 @@ fun IntroductionDrawerContent( } } +@Composable +private fun BoxScope.EmptyList() = Text( + text = i18n("introduction.state.no_contacts"), + style = MaterialTheme.typography.body1, + modifier = Modifier.padding(8.dp).align(Center), +) + +@Composable +private fun List(viewModel: IntroductionViewModel) = VerticallyScrollableArea { scrollState -> + LazyColumn(state = scrollState) { + items( + items = viewModel.contactList.value, + key = { it.contactItem.id }, + ) { introductionContactItem -> + IntroductionListItemView( + introductionContactItem = introductionContactItem, + selected = viewModel.isSecondContactSelected(introductionContactItem), + onToggle = { viewModel.toggleSecondContact(introductionContactItem) }, + ) + } + } +} + @Composable private fun IntroductionListItemView( introductionContactItem: IntroductionViewModel.IntroductionContactItem, @@ -155,7 +162,7 @@ private fun IntroductionListItemView( multiSelectWithCheckbox = true, ) { Column( - verticalArrangement = Arrangement.spacedBy(4.dp), + verticalArrangement = spacedBy(4.dp), modifier = Modifier.padding(vertical = 8.dp).padding(end = 8.dp) ) { ContactItemViewSmall(