mobile: current profile button in profile menu opens settings (#1882)

This commit is contained in:
Evgeny Poberezkin
2023-02-03 11:22:17 +00:00
committed by GitHub
parent 3837e92556
commit a36f2147d8
2 changed files with 16 additions and 10 deletions

View File

@@ -97,8 +97,11 @@ fun UserPicker(chatModel: ChatModel, userPickerState: MutableStateFlow<AnimatedV
.background(MaterialTheme.colors.background, MaterialTheme.shapes.medium)
) {
Column(Modifier.weight(1f).verticalScroll(rememberScrollState())) {
users.forEachIndexed { i, u ->
UserProfilePickerItem(u.user, u.unreadCount) {
users.forEach { u ->
UserProfilePickerItem(u.user, u.unreadCount, openSettings = {
openSettings()
userPickerState.value = AnimatedViewState.GONE
}) {
userPickerState.value = AnimatedViewState.HIDING
if (!u.user.activeUser) {
chatModel.chats.clear()
@@ -113,12 +116,10 @@ fun UserPicker(chatModel: ChatModel, userPickerState: MutableStateFlow<AnimatedV
}
}
}
if (i != users.lastIndex) {
Divider(Modifier.requiredHeight(1.dp))
}
Divider(Modifier.requiredHeight(1.dp))
if (u.user.activeUser) Divider(Modifier.requiredHeight(0.5.dp))
}
}
Divider()
SettingsPickerItem {
openSettings()
userPickerState.value = AnimatedViewState.GONE
@@ -128,13 +129,13 @@ fun UserPicker(chatModel: ChatModel, userPickerState: MutableStateFlow<AnimatedV
}
@Composable
fun UserProfilePickerItem(u: User, unreadCount: Int = 0, onLongClick: () -> Unit = {}, onClick: () -> Unit) {
fun UserProfilePickerItem(u: User, unreadCount: Int = 0, onLongClick: () -> Unit = {}, openSettings: () -> Unit = {}, onClick: () -> Unit) {
Row(
Modifier
.fillMaxWidth()
.sizeIn(minHeight = 46.dp)
.combinedClickable(
onClick = if (!u.activeUser) onClick else { {} },
onClick = if (u.activeUser) openSettings else onClick,
onLongClick = onLongClick,
interactionSource = remember { MutableInteractionSource() },
indication = if (!u.activeUser) LocalIndication.current else null

View File

@@ -34,6 +34,7 @@ struct UserPicker: View {
ForEach(users) { u in
userView(u)
Divider()
if u.user.activeUser { Divider() }
}
}
.overlay {
@@ -90,7 +91,12 @@ struct UserPicker: View {
private func userView(_ u: UserInfo) -> some View {
let user = u.user
return Button(action: {
if !user.activeUser {
if user.activeUser {
showSettings = true
withAnimation {
userPickerVisible.toggle()
}
} else {
do {
try changeActiveUser_(user.userId)
userPickerVisible = false
@@ -120,7 +126,6 @@ struct UserPicker: View {
.padding(.trailing)
.padding([.leading, .vertical], 12)
})
.disabled(user.activeUser)
.buttonStyle(PressedButtonStyle(defaultColor: fillColor, pressedColor: Color(uiColor: .secondarySystemFill)))
}