mobile: ignore spaces around password (#2144)

This commit is contained in:
Evgeny Poberezkin
2023-04-04 21:53:25 +01:00
committed by GitHub
parent da17639309
commit a11f99be3d
2 changed files with 15 additions and 13 deletions

View File

@@ -52,7 +52,7 @@ fun UserProfilesView(m: ChatModel, search: MutableState<String>, profileHidden:
},
activateUser = { user ->
withBGApi {
m.controller.changeActiveUser(user.userId, userViewPassword(user, searchTextOrPassword.value))
m.controller.changeActiveUser(user.userId, userViewPassword(user, searchTextOrPassword.value.trim()))
}
},
removeUser = { user ->
@@ -71,13 +71,13 @@ fun UserProfilesView(m: ChatModel, search: MutableState<String>, profileHidden:
Column {
SectionItemView({
AlertManager.shared.hideAlert()
removeUser(m, user, users, true, searchTextOrPassword.value)
removeUser(m, user, users, true, searchTextOrPassword.value.trim())
}) {
Text(stringResource(R.string.users_delete_with_connections), color = Color.Red)
}
SectionItemView({
AlertManager.shared.hideAlert()
removeUser(m, user, users, false, searchTextOrPassword.value)
removeUser(m, user, users, false, searchTextOrPassword.value.trim())
}
) {
Text(stringResource(R.string.users_delete_data_only), color = Color.Red)
@@ -107,7 +107,7 @@ fun UserProfilesView(m: ChatModel, search: MutableState<String>, profileHidden:
}
}
} else {
withBGApi { setUserPrivacy(m) { m.controller.apiUnhideUser(user.userId, searchTextOrPassword.value) } }
withBGApi { setUserPrivacy(m) { m.controller.apiUnhideUser(user.userId, searchTextOrPassword.value.trim()) } }
}
},
muteUser = { user ->
@@ -173,7 +173,7 @@ private fun UserProfilesView(
UserView(user, users, visibleUsersCount, activateUser, removeUser, unhideUser, muteUser, unmuteUser, showHiddenProfile)
SectionDivider()
}
if (searchTextOrPassword.value.isEmpty()) {
if (searchTextOrPassword.value.trim().isEmpty()) {
SectionItemView(addUser, minHeight = 68.dp) {
Icon(Icons.Outlined.Add, stringResource(R.string.users_add), tint = MaterialTheme.colors.primary)
Spacer(Modifier.padding(horizontal = 4.dp))
@@ -324,10 +324,10 @@ private fun correctPassword(user: User, pwd: String): Boolean {
}
private fun userViewPassword(user: User, searchTextOrPassword: String): String? =
if (user.hidden) searchTextOrPassword else null
if (user.hidden) searchTextOrPassword.trim() else null
private fun passwordEntryRequired(user: User, searchTextOrPassword: String): Boolean =
user.hidden && user.activeUser && !correctPassword(user, searchTextOrPassword)
user.hidden && user.activeUser && !correctPassword(user, searchTextOrPassword.trim())
private fun removeUser(m: ChatModel, user: User, users: List<User>, delSMPQueues: Boolean, searchTextOrPassword: String) {
if (passwordEntryRequired(user, searchTextOrPassword)) {
@@ -340,7 +340,7 @@ private fun removeUser(m: ChatModel, user: User, users: List<User>, delSMPQueues
}
}
} else {
withBGApi { doRemoveUser(m, user, users, delSMPQueues, userViewPassword(user, searchTextOrPassword)) }
withBGApi { doRemoveUser(m, user, users, delSMPQueues, userViewPassword(user, searchTextOrPassword.trim())) }
}
}

View File

@@ -22,6 +22,8 @@ struct UserProfilesView: View {
@State private var profileAction: UserProfileAction?
@State private var actionPassword = ""
var trimmedSearchTextOrPassword: String { searchTextOrPassword.trimmingCharacters(in: .whitespaces)}
private enum UserProfilesAlert: Identifiable {
case deleteUser(user: User, delSMPQueues: Bool)
case cantDeleteLastUser
@@ -90,7 +92,7 @@ struct UserProfilesView: View {
}
}
if searchTextOrPassword == "" {
if trimmedSearchTextOrPassword == "" {
NavigationLink {
CreateProfile()
} label: {
@@ -179,7 +181,7 @@ struct UserProfilesView: View {
}
private func filteredUsers() -> [UserInfo] {
let s = searchTextOrPassword.trimmingCharacters(in: .whitespaces)
let s = trimmedSearchTextOrPassword
let lower = s.localizedLowercase
return m.users.filter { u in
if (u.user.activeUser || !u.user.hidden) && (s == "" || u.user.chatViewName.localizedLowercase.contains(lower)) {
@@ -201,7 +203,7 @@ struct UserProfilesView: View {
}
private func userViewPassword(_ user: User) -> String? {
!user.hidden ? nil : searchTextOrPassword
!user.hidden ? nil : trimmedSearchTextOrPassword
}
@ViewBuilder private func profileActionView(_ action: UserProfileAction) -> some View {
@@ -267,7 +269,7 @@ struct UserProfilesView: View {
}
private func passwordEntryRequired(_ user: User) -> Bool {
user.hidden && user.activeUser && !correctPassword(user, searchTextOrPassword)
user.hidden && user.activeUser && !correctPassword(user, trimmedSearchTextOrPassword)
}
private func removeUser(_ user: User, _ delSMPQueues: Bool, viewPwd: String?) async {
@@ -328,7 +330,7 @@ struct UserProfilesView: View {
if passwordEntryRequired(user) {
profileAction = .unhideUser(user: user)
} else {
setUserPrivacy(user) { try await apiUnhideUser(user.userId, viewPwd: searchTextOrPassword) }
setUserPrivacy(user) { try await apiUnhideUser(user.userId, viewPwd: trimmedSearchTextOrPassword) }
}
}
.tint(.green)