- 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,
|
containerColor = MaterialTheme.colorScheme.surface,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
TabRow(
|
TopAppTabs(viewModel, pagerState)
|
||||||
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)) },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
) { padding ->
|
) { 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
|
@Composable
|
||||||
fun TitleAndDescription(viewModel: PeopleListViewModel) {
|
fun TitleAndDescription(viewModel: PeopleListViewModel) {
|
||||||
val selectedSetState = viewModel.selectedList.collectAsStateWithLifecycle()
|
val selectedSetState = viewModel.selectedList.collectAsStateWithLifecycle()
|
||||||
@@ -278,11 +300,11 @@ private fun RenderAddUserFieldAndSuggestions(
|
|||||||
ShowUserSuggestions(
|
ShowUserSuggestions(
|
||||||
userSuggestions = viewModel.userSuggestions,
|
userSuggestions = viewModel.userSuggestions,
|
||||||
hasUserFlow = { user ->
|
hasUserFlow = { user ->
|
||||||
viewModel.hasUserFlow(user, pagerState.currentPage == 0)
|
viewModel.hasUserFlow(user, pagerState.currentPage == 1)
|
||||||
},
|
},
|
||||||
onSelect = { user ->
|
onSelect = { user ->
|
||||||
accountViewModel.runIOCatching {
|
accountViewModel.runIOCatching {
|
||||||
viewModel.addUserToSet(user, pagerState.currentPage == 0)
|
viewModel.addUserToSet(user, pagerState.currentPage == 1)
|
||||||
}
|
}
|
||||||
userName =
|
userName =
|
||||||
userName.copy(
|
userName.copy(
|
||||||
@@ -291,7 +313,7 @@ private fun RenderAddUserFieldAndSuggestions(
|
|||||||
},
|
},
|
||||||
onDelete = { user ->
|
onDelete = { user ->
|
||||||
accountViewModel.runIOCatching {
|
accountViewModel.runIOCatching {
|
||||||
viewModel.removeUserFromSet(user, pagerState.currentPage == 0)
|
viewModel.removeUserFromSet(user, pagerState.currentPage == 1)
|
||||||
}
|
}
|
||||||
userName =
|
userName =
|
||||||
userName.copy(
|
userName.copy(
|
||||||
@@ -317,9 +339,9 @@ private fun PeopleListPager(
|
|||||||
when (page) {
|
when (page) {
|
||||||
0 ->
|
0 ->
|
||||||
PeopleListView(
|
PeopleListView(
|
||||||
memberList = selectedSet.privateMembersList,
|
memberList = selectedSet.publicMembersList,
|
||||||
onDeleteUser = { user ->
|
onDeleteUser = { user ->
|
||||||
onDeleteUser(user, true)
|
onDeleteUser(user, false)
|
||||||
},
|
},
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
accountViewModel = accountViewModel,
|
accountViewModel = accountViewModel,
|
||||||
@@ -328,9 +350,9 @@ private fun PeopleListPager(
|
|||||||
|
|
||||||
1 ->
|
1 ->
|
||||||
PeopleListView(
|
PeopleListView(
|
||||||
memberList = selectedSet.publicMembersList,
|
memberList = selectedSet.privateMembersList,
|
||||||
onDeleteUser = { user ->
|
onDeleteUser = { user ->
|
||||||
onDeleteUser(user, false)
|
onDeleteUser(user, true)
|
||||||
},
|
},
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
accountViewModel = accountViewModel,
|
accountViewModel = accountViewModel,
|
||||||
|
|||||||
@@ -1346,6 +1346,8 @@
|
|||||||
<string name="in_the_list">Already in the list</string>
|
<string name="in_the_list">Already in the list</string>
|
||||||
<string name="private_members">Private Members</string>
|
<string name="private_members">Private Members</string>
|
||||||
<string name="public_members">Public 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="add_user_to_the_list">Add user to the list</string>
|
||||||
<string name="remove_user_from_the_list">Add user to the list</string>
|
<string name="remove_user_from_the_list">Add user to the list</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user