diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/PeopleListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/PeopleListScreen.kt index 8e3522c9a..7cfbad800 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/PeopleListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/display/PeopleListScreen.kt @@ -151,24 +151,7 @@ fun PeopleListScreen( containerColor = MaterialTheme.colorScheme.surface, ), ) - TabRow( - containerColor = Color.Transparent, - contentColor = MaterialTheme.colorScheme.onBackground, - selectedTabIndex = pagerState.currentPage, - modifier = TabRowHeight, - ) { - val scope = rememberCoroutineScope() - Tab( - selected = pagerState.currentPage == 0, - onClick = { scope.launch { pagerState.animateScrollToPage(0) } }, - text = { Text(text = stringRes(R.string.private_members)) }, - ) - Tab( - selected = pagerState.currentPage == 1, - onClick = { scope.launch { pagerState.animateScrollToPage(1) } }, - text = { Text(text = stringRes(R.string.public_members)) }, - ) - } + TopAppTabs(viewModel, pagerState) } }, ) { padding -> @@ -189,6 +172,45 @@ fun PeopleListScreen( } } +@Composable +fun TopAppTabs( + viewModel: PeopleListViewModel, + pagerState: PagerState, +) { + TabRow( + containerColor = Color.Transparent, + contentColor = MaterialTheme.colorScheme.onBackground, + selectedTabIndex = pagerState.currentPage, + modifier = TabRowHeight, + ) { + val scope = rememberCoroutineScope() + Tab( + selected = pagerState.currentPage == 0, + onClick = { scope.launch { pagerState.animateScrollToPage(0) } }, + text = { + val list = viewModel.selectedList.collectAsStateWithLifecycle() + val labelPublic = + list.value?.let { + stringRes(R.string.public_members_count, it.publicMembers.size) + } ?: stringRes(R.string.public_members) + Text(labelPublic) + }, + ) + Tab( + selected = pagerState.currentPage == 1, + onClick = { scope.launch { pagerState.animateScrollToPage(1) } }, + text = { + val list = viewModel.selectedList.collectAsStateWithLifecycle() + val labelPrivate = + list.value?.let { + stringRes(R.string.private_members_count, it.privateMembersList.size) + } ?: stringRes(R.string.private_members) + Text(labelPrivate) + }, + ) + } +} + @Composable fun TitleAndDescription(viewModel: PeopleListViewModel) { val selectedSetState = viewModel.selectedList.collectAsStateWithLifecycle() @@ -278,11 +300,11 @@ private fun RenderAddUserFieldAndSuggestions( ShowUserSuggestions( userSuggestions = viewModel.userSuggestions, hasUserFlow = { user -> - viewModel.hasUserFlow(user, pagerState.currentPage == 0) + viewModel.hasUserFlow(user, pagerState.currentPage == 1) }, onSelect = { user -> accountViewModel.runIOCatching { - viewModel.addUserToSet(user, pagerState.currentPage == 0) + viewModel.addUserToSet(user, pagerState.currentPage == 1) } userName = userName.copy( @@ -291,7 +313,7 @@ private fun RenderAddUserFieldAndSuggestions( }, onDelete = { user -> accountViewModel.runIOCatching { - viewModel.removeUserFromSet(user, pagerState.currentPage == 0) + viewModel.removeUserFromSet(user, pagerState.currentPage == 1) } userName = userName.copy( @@ -317,9 +339,9 @@ private fun PeopleListPager( when (page) { 0 -> PeopleListView( - memberList = selectedSet.privateMembersList, + memberList = selectedSet.publicMembersList, onDeleteUser = { user -> - onDeleteUser(user, true) + onDeleteUser(user, false) }, modifier = Modifier.fillMaxSize(), accountViewModel = accountViewModel, @@ -328,9 +350,9 @@ private fun PeopleListPager( 1 -> PeopleListView( - memberList = selectedSet.publicMembersList, + memberList = selectedSet.privateMembersList, onDeleteUser = { user -> - onDeleteUser(user, false) + onDeleteUser(user, true) }, modifier = Modifier.fillMaxSize(), accountViewModel = accountViewModel, diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml index aee6b7f40..758fee0d2 100644 --- a/amethyst/src/main/res/values/strings.xml +++ b/amethyst/src/main/res/values/strings.xml @@ -1346,6 +1346,8 @@ Already in the list Private Members Public Members + Private Members (%1$s) + Public Members (%1$s) Add user to the list Add user to the list