- Inverts public and private tabs
- adds number of users in the tab title
This commit is contained in:
+47
-25
@@ -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,
|
||||
|
||||
@@ -1346,6 +1346,8 @@
|
||||
<string name="in_the_list">Already in the list</string>
|
||||
<string name="private_members">Private Members</string>
|
||||
<string name="public_members">Public Members</string>
|
||||
<string name="private_members_count">Private Members (%1$s)</string>
|
||||
<string name="public_members_count">Public Members (%1$s)</string>
|
||||
<string name="add_user_to_the_list">Add user to the list</string>
|
||||
<string name="remove_user_from_the_list">Add user to the list</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user