diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListFeedView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListFeedView.kt index dd66d079d..570492539 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListFeedView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListFeedView.kt @@ -23,7 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.list import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -46,9 +45,8 @@ import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.FeedPadding import com.vitorpamplona.amethyst.ui.theme.MaxWidthWithHorzPadding -import com.vitorpamplona.amethyst.ui.theme.Size40dp +import com.vitorpamplona.amethyst.ui.theme.Size20dp import com.vitorpamplona.amethyst.ui.theme.SpacedBy5dp -import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer import com.vitorpamplona.amethyst.ui.theme.grayText @Composable @@ -60,40 +58,46 @@ fun AllPeopleListFeedView( val peopleListFeedState by peopleListModel.listFlow().collectAsStateWithLifecycle() val followPackFeedState by followPackModel.listFlow().collectAsStateWithLifecycle() - if (peopleListFeedState.isEmpty() && followPackFeedState.isEmpty()) { - AllPeopleListFeedEmpty( - message = stringRes(R.string.follow_set_empty_feed_msg), - ) - } else { - LazyColumn( - state = rememberLazyListState(), - contentPadding = FeedPadding, - ) { - stickyHeader { - Row( - modifier = MaxWidthWithHorzPadding, - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = SpacedBy5dp, - ) { - Column(modifier = Modifier.weight(1f)) { - Text( - text = stringRes(R.string.follow_sets), - color = MaterialTheme.colorScheme.primary, - style = MaterialTheme.typography.titleSmall, - ) - Text( - text = stringRes(R.string.follow_sets_explainer), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.grayText, - ) - } - NewListButton( - onClick = { - nav.nav(Route.PeopleListMetadataEdit()) - }, + LazyColumn( + state = rememberLazyListState(), + contentPadding = FeedPadding, + ) { + stickyHeader { + Row( + modifier = MaxWidthWithHorzPadding, + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = SpacedBy5dp, + ) { + Column(modifier = Modifier.weight(1f)) { + Text( + text = stringRes(R.string.follow_sets), + color = MaterialTheme.colorScheme.primary, + style = MaterialTheme.typography.titleSmall, + ) + Text( + text = stringRes(R.string.follow_sets_explainer), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.grayText, ) } + NewListButton( + onClick = { + nav.nav(Route.PeopleListMetadataEdit()) + }, + ) } + } + if (peopleListFeedState.isEmpty()) { + item { + Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center) { + Text( + text = stringRes(R.string.feed_is_empty), + modifier = Modifier.padding(vertical = Size20dp), + ) + HorizontalDivider(thickness = DividerThickness) + } + } + } else { itemsIndexed(peopleListFeedState, key = { _, item -> item.identifierTag }) { _, followSet -> PeopleListItem( modifier = @@ -108,34 +112,46 @@ fun AllPeopleListFeedView( ) HorizontalDivider(thickness = DividerThickness) } - stickyHeader { - Row( - modifier = - Modifier - .fillMaxWidth() - .padding(start = 10.dp, end = 10.dp, top = 10.dp), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = SpacedBy5dp, - ) { - Column(modifier = Modifier.weight(1f)) { - Text( - text = stringRes(R.string.discover_follows), - color = MaterialTheme.colorScheme.primary, - style = MaterialTheme.typography.titleSmall, - ) - Text( - text = stringRes(R.string.discover_follows_explainer), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.grayText, - ) - } - NewListButton( - onClick = { - nav.nav(Route.FollowPackMetadataEdit()) - }, + } + stickyHeader { + Row( + modifier = + Modifier + .fillMaxWidth() + .padding(start = 10.dp, end = 10.dp, top = 10.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = SpacedBy5dp, + ) { + Column(modifier = Modifier.weight(1f)) { + Text( + text = stringRes(R.string.discover_follows), + color = MaterialTheme.colorScheme.primary, + style = MaterialTheme.typography.titleSmall, + ) + Text( + text = stringRes(R.string.discover_follows_explainer), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.grayText, ) } + NewListButton( + onClick = { + nav.nav(Route.FollowPackMetadataEdit()) + }, + ) } + } + if (followPackFeedState.isEmpty()) { + item { + Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center) { + Text( + text = stringRes(R.string.feed_is_empty), + modifier = Modifier.padding(vertical = Size20dp), + ) + HorizontalDivider(thickness = DividerThickness) + } + } + } else { itemsIndexed(followPackFeedState, key = { _, item -> item.identifierTag }) { _, followSet -> PeopleListItem( modifier = @@ -153,17 +169,3 @@ fun AllPeopleListFeedView( } } } - -@Composable -fun AllPeopleListFeedEmpty(message: String = stringRes(R.string.feed_is_empty)) { - Column( - Modifier - .fillMaxSize() - .padding(horizontal = Size40dp), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, - ) { - Text(message) - Spacer(modifier = StdVertSpacer) - } -} diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowListAndPackAndUserView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowListAndPackAndUserView.kt index cffd299fc..2332c2559 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowListAndPackAndUserView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowListAndPackAndUserView.kt @@ -23,8 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.memberEdit import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn @@ -48,8 +46,8 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.list.NewListButton import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.MaxWidthWithHorzPadding +import com.vitorpamplona.amethyst.ui.theme.Size20dp import com.vitorpamplona.amethyst.ui.theme.SpacedBy5dp -import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer import com.vitorpamplona.amethyst.ui.theme.grayText @Composable @@ -63,44 +61,43 @@ fun FollowListAndPackAndUserView( val followPackFeedState by accountViewModel.account.followLists.uiListFlow .collectAsStateWithLifecycle() - if (followSetsState.isEmpty() && followPackFeedState.isEmpty()) { - Column( - Modifier - .fillMaxWidth() - .fillMaxHeight(0.5f), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, - ) { - Text(text = stringRes(R.string.follow_set_empty_dialog_msg)) - Spacer(modifier = StdVertSpacer) - } - } else { - val userName by observeUserName(userToAddOrRemove, accountViewModel) + val userName by observeUserName(userToAddOrRemove, accountViewModel) - LazyColumn(modifier = Modifier.fillMaxWidth()) { - stickyHeader { - Row( - modifier = MaxWidthWithHorzPadding, - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = SpacedBy5dp, - ) { - Column(modifier = Modifier.weight(1f)) { - Text( - text = stringRes(R.string.follow_sets), - color = MaterialTheme.colorScheme.primary, - style = MaterialTheme.typography.titleSmall, - ) - Text( - text = stringRes(R.string.follow_sets_explainer), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.grayText, - ) - } - NewListButton( - onClick = { nav.nav(Route.PeopleListMetadataEdit()) }, + LazyColumn(modifier = Modifier.fillMaxWidth()) { + stickyHeader { + Row( + modifier = MaxWidthWithHorzPadding, + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = SpacedBy5dp, + ) { + Column(modifier = Modifier.weight(1f)) { + Text( + text = stringRes(R.string.follow_sets), + color = MaterialTheme.colorScheme.primary, + style = MaterialTheme.typography.titleSmall, + ) + Text( + text = stringRes(R.string.follow_sets_explainer), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.grayText, ) } + NewListButton( + onClick = { nav.nav(Route.PeopleListMetadataEdit()) }, + ) } + } + if (followSetsState.isEmpty()) { + item { + Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center) { + Text( + text = stringRes(R.string.feed_is_empty), + modifier = Modifier.padding(vertical = Size20dp), + ) + HorizontalDivider(thickness = DividerThickness) + } + } + } else { itemsIndexed(followSetsState, key = { _, item -> item.identifierTag }) { _, list -> PeopleListAndUserItem( modifier = Modifier.fillMaxWidth(), @@ -136,32 +133,44 @@ fun FollowListAndPackAndUserView( ) HorizontalDivider(thickness = DividerThickness) } - stickyHeader { - Row( - modifier = - Modifier - .fillMaxWidth() - .padding(start = 10.dp, end = 10.dp, top = 10.dp), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = SpacedBy5dp, - ) { - Column(modifier = Modifier.weight(1f)) { - Text( - text = stringRes(R.string.discover_follows), - color = MaterialTheme.colorScheme.primary, - style = MaterialTheme.typography.titleSmall, - ) - Text( - text = stringRes(R.string.discover_follows_explainer), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.grayText, - ) - } - NewListButton( - onClick = { nav.nav(Route.FollowPackMetadataEdit()) }, + } + stickyHeader { + Row( + modifier = + Modifier + .fillMaxWidth() + .padding(start = 10.dp, end = 10.dp, top = 10.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = SpacedBy5dp, + ) { + Column(modifier = Modifier.weight(1f)) { + Text( + text = stringRes(R.string.discover_follows), + color = MaterialTheme.colorScheme.primary, + style = MaterialTheme.typography.titleSmall, + ) + Text( + text = stringRes(R.string.discover_follows_explainer), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.grayText, ) } + NewListButton( + onClick = { nav.nav(Route.FollowPackMetadataEdit()) }, + ) } + } + if (followPackFeedState.isEmpty()) { + item { + Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center) { + Text( + text = stringRes(R.string.feed_is_empty), + modifier = Modifier.padding(vertical = Size20dp), + ) + HorizontalDivider(thickness = DividerThickness) + } + } + } else { itemsIndexed(followPackFeedState, key = { _, item -> item.identifierTag }) { _, list -> FollowPackAndUserItem( modifier = Modifier.fillMaxWidth(),