Improves paddings, language and add stickiness backgrounds

This commit is contained in:
Vitor Pamplona
2025-10-24 19:08:26 -04:00
parent b0e7082ec6
commit 371d3bf0f7
2 changed files with 42 additions and 14 deletions

View File

@@ -62,30 +62,36 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.model.User
import com.vitorpamplona.amethyst.model.nip51Lists.followSets.FollowSet import com.vitorpamplona.amethyst.model.nip51Lists.followSets.FollowSet
import com.vitorpamplona.amethyst.ui.components.ClickableBox import com.vitorpamplona.amethyst.ui.components.ClickableBox
import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav
import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav.nav
import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.note.UserCompose import com.vitorpamplona.amethyst.ui.note.UserCompose
import com.vitorpamplona.amethyst.ui.note.VerticalDotsIcon import com.vitorpamplona.amethyst.ui.note.VerticalDotsIcon
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.FollowSetFeedViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.FollowSetFeedViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.mockAccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.qrcode.BackButton import com.vitorpamplona.amethyst.ui.screen.loggedIn.qrcode.BackButton
import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.DividerThickness
import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer
import com.vitorpamplona.amethyst.ui.theme.FeedPadding import com.vitorpamplona.amethyst.ui.theme.FeedPadding
import com.vitorpamplona.amethyst.ui.theme.HalfHalfHorzModifier
import com.vitorpamplona.amethyst.ui.theme.HalfPadding import com.vitorpamplona.amethyst.ui.theme.HalfPadding
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
import com.vitorpamplona.amethyst.ui.theme.StdPadding import com.vitorpamplona.amethyst.ui.theme.StdPadding
import com.vitorpamplona.amethyst.ui.theme.VertPadding import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow
import com.vitorpamplona.quartz.nip51Lists.peopleList.PeopleListEvent import com.vitorpamplona.quartz.nip51Lists.peopleList.PeopleListEvent
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -259,6 +265,26 @@ fun TitleAndDescription(
} }
} }
@Composable
@Preview(device = "spec:width=2160px,height=2340px,dpi=440")
fun FollowSetListViewPreview() {
val accountViewModel = mockAccountViewModel()
val user1: User = LocalCache.getOrCreateUser("460c25e682fda7832b52d1f22d3d22b3176d972f60dcdc3212ed8c92ef85065c")
val user2: User = LocalCache.getOrCreateUser("ca89cb11f1c75d5b6622268ff43d2288ea8b2cb5b9aa996ff9ff704fc904b78b")
val user3: User = LocalCache.getOrCreateUser("7eb29c126b3628077e2e3d863b917a56b74293aa9d8a9abc26a40ba3f2866baf")
ThemeComparisonRow {
FollowSetListView(
publicMemberList = listOf(user1, user2, user3),
privateMemberList = listOf(user1, user2, user3),
onDeleteUser = { },
accountViewModel = accountViewModel,
nav = EmptyNav,
)
}
}
@Composable @Composable
private fun FollowSetListView( private fun FollowSetListView(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
@@ -277,15 +303,13 @@ private fun FollowSetListView(
) { ) {
if (publicMemberList.isNotEmpty()) { if (publicMemberList.isNotEmpty()) {
stickyHeader { stickyHeader {
Column(
modifier = VertPadding,
) {
Text( Text(
text = stringRes(R.string.follow_set_public_members_header_label), text = stringRes(R.string.follow_set_public_members_header_label2),
modifier = Modifier.fillMaxWidth().background(MaterialTheme.colorScheme.background).padding(vertical = 5.dp),
fontSize = 18.sp, fontSize = 18.sp,
fontWeight = FontWeight.Bold, fontWeight = FontWeight.Bold,
textAlign = TextAlign.Center,
) )
}
HorizontalDivider(thickness = DividerThickness) HorizontalDivider(thickness = DividerThickness)
} }
itemsIndexed(publicMemberList, key = { _, item -> "u" + item.pubkeyHex }) { _, item -> itemsIndexed(publicMemberList, key = { _, item -> "u" + item.pubkeyHex }) { _, item ->
@@ -298,15 +322,17 @@ private fun FollowSetListView(
) )
} }
item { item {
Spacer(modifier = Modifier.height(30.dp)) Spacer(modifier = Modifier.height(10.dp))
} }
} }
if (privateMemberList.isNotEmpty()) { if (privateMemberList.isNotEmpty()) {
stickyHeader { stickyHeader {
Text( Text(
text = stringRes(R.string.follow_set_private_members_header_label), text = stringRes(R.string.follow_set_private_members_header_label2),
modifier = Modifier.fillMaxWidth().background(MaterialTheme.colorScheme.background).padding(vertical = 5.dp),
fontSize = 18.sp, fontSize = 18.sp,
fontWeight = FontWeight.Bold, fontWeight = FontWeight.Bold,
textAlign = TextAlign.Center,
) )
HorizontalDivider(thickness = DividerThickness) HorizontalDivider(thickness = DividerThickness)
} }
@@ -337,7 +363,7 @@ fun FollowSetListItem(
Column( Column(
modifier = modifier, modifier = modifier,
) { ) {
Row { Row(HalfHalfHorzModifier) {
UserCompose( UserCompose(
user, user,
overallModifier = HalfPadding.weight(1f, fill = false), overallModifier = HalfPadding.weight(1f, fill = false),

View File

@@ -527,6 +527,8 @@
<string name="follow_set_private_presence_indicator">%1$s is a private member</string> <string name="follow_set_private_presence_indicator">%1$s is a private member</string>
<string name="follow_set_public_member_add_label">Add as public member</string> <string name="follow_set_public_member_add_label">Add as public member</string>
<string name="follow_set_private_member_add_label">Add as private member</string> <string name="follow_set_private_member_add_label">Add as private member</string>
<string name="follow_set_public_members_header_label2">Public Members</string>
<string name="follow_set_private_members_header_label2">Private Members</string>
<string name="follow_set_public_members_header_label">Public Profiles</string> <string name="follow_set_public_members_header_label">Public Profiles</string>
<string name="follow_set_private_members_header_label">Private Profiles</string> <string name="follow_set_private_members_header_label">Private Profiles</string>
<string name="follow_set_single_member_label">member</string> <string name="follow_set_single_member_label">member</string>