reset password

This commit is contained in:
cheykrym 2025-12-03 07:51:31 +03:00
parent 97951cc748
commit a4102f7890
2 changed files with 61 additions and 5 deletions

View File

@ -529,6 +529,9 @@
}
}
}
},
"Если забыли пароль, воспользуйтесь входом по коду — это позволит попасть в аккаунт без пароля и уже там сменить его в настройках. Скоро появится полноценный сброс." : {
},
"Если не нашли ответ, напишите нам своё предложение или проблему." : {
"comment" : "FAQ: contact developers footer",
@ -549,6 +552,9 @@
},
"Заблокировать контакт" : {
"comment" : "Contacts context action block"
},
"Забыли пароль? Сбросить" : {
},
"Завершить" : {
"comment" : "Кнопка завершения конкретной сессии\nПодтверждение завершения других сессий\nПодтверждение завершения конкретной сессии"
@ -1762,6 +1768,9 @@
},
"Перейдите в раздел \"Настройки > Сменить пароль\" и следуйте инструкциям." : {
"comment" : "FAQ answer: reset password"
},
"Перейти к входу по коду" : {
},
"По умолчанию это полноценная соцсеть с лентой, историями и подписками. Если нужно только общение без лишнего контента, переключитесь на режим “Только чаты”. Переключить режим можно в любой момент." : {
@ -2300,6 +2309,9 @@
}
}
}
},
"Сброс пароля" : {
},
"Сбросить по умолчанию" : {
"localizations" : {

View File

@ -83,6 +83,7 @@ struct PasswordLoginView: View {
@State private var showLegacySupportNotice = false
@State private var isShowingTerms = false
@State private var hasResetTermsOnAppear = false
@State private var isShowingForgotPassword = false
@FocusState private var focusedField: Field?
private enum Field: Hashable {
@ -199,12 +200,9 @@ struct PasswordLoginView: View {
.disabled(!isLoginButtonEnabled)
Button(action: {
viewModel.hasAcceptedTerms = false
withAnimation {
viewModel.showRegistration()
}
isShowingForgotPassword = true
}) {
Text(NSLocalizedString("Нет аккаунта? Регистрация", comment: "Регистрация"))
Text(NSLocalizedString("Забыли пароль? Сбросить", comment: ""))
.foregroundColor(.blue)
.frame(maxWidth: .infinity)
}
@ -253,6 +251,16 @@ struct PasswordLoginView: View {
.transition(.opacity)
}
}
.sheet(isPresented: $isShowingForgotPassword) {
ForgotPasswordInfoView {
isShowingForgotPassword = false
withAnimation {
viewModel.showPasswordlessRequest()
}
} onDismiss: {
isShowingForgotPassword = false
}
}
}
private var themeIconName: String {
switch themeManager.theme {
@ -792,3 +800,39 @@ struct LoginView_Previews: PreviewProvider {
return LoginView(viewModel: viewModel)
}
}
private struct ForgotPasswordInfoView: View {
let onUseCode: () -> Void
let onDismiss: () -> Void
var body: some View {
NavigationView {
VStack(alignment: .leading, spacing: 16) {
Text(NSLocalizedString("Сброс пароля", comment: ""))
.font(.title2.bold())
Text(NSLocalizedString("Если забыли пароль, воспользуйтесь входом по коду — это позволит попасть в аккаунт без пароля и уже там сменить его в настройках. Скоро появится полноценный сброс.", comment: ""))
.foregroundColor(.secondary)
Button(action: onUseCode) {
Text(NSLocalizedString("Перейти к входу по коду", comment: ""))
.foregroundColor(.white)
.frame(maxWidth: .infinity)
.padding()
.background(Color.accentColor)
.cornerRadius(12)
}
Button(action: onDismiss) {
Text(NSLocalizedString("Закрыть", comment: ""))
.frame(maxWidth: .infinity)
.padding()
}
Spacer()
}
.padding()
.navigationBarHidden(true)
}
}
}