reset password
This commit is contained in:
parent
97951cc748
commit
a4102f7890
@ -529,6 +529,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"Если забыли пароль, воспользуйтесь входом по коду — это позволит попасть в аккаунт без пароля и уже там сменить его в настройках. Скоро появится полноценный сброс." : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"Если не нашли ответ, напишите нам своё предложение или проблему." : {
|
"Если не нашли ответ, напишите нам своё предложение или проблему." : {
|
||||||
"comment" : "FAQ: contact developers footer",
|
"comment" : "FAQ: contact developers footer",
|
||||||
@ -549,6 +552,9 @@
|
|||||||
},
|
},
|
||||||
"Заблокировать контакт" : {
|
"Заблокировать контакт" : {
|
||||||
"comment" : "Contacts context action block"
|
"comment" : "Contacts context action block"
|
||||||
|
},
|
||||||
|
"Забыли пароль? Сбросить" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"Завершить" : {
|
"Завершить" : {
|
||||||
"comment" : "Кнопка завершения конкретной сессии\nПодтверждение завершения других сессий\nПодтверждение завершения конкретной сессии"
|
"comment" : "Кнопка завершения конкретной сессии\nПодтверждение завершения других сессий\nПодтверждение завершения конкретной сессии"
|
||||||
@ -1762,6 +1768,9 @@
|
|||||||
},
|
},
|
||||||
"Перейдите в раздел \"Настройки > Сменить пароль\" и следуйте инструкциям." : {
|
"Перейдите в раздел \"Настройки > Сменить пароль\" и следуйте инструкциям." : {
|
||||||
"comment" : "FAQ answer: reset password"
|
"comment" : "FAQ answer: reset password"
|
||||||
|
},
|
||||||
|
"Перейти к входу по коду" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"По умолчанию это полноценная соцсеть с лентой, историями и подписками. Если нужно только общение без лишнего контента, переключитесь на режим “Только чаты”. Переключить режим можно в любой момент." : {
|
"По умолчанию это полноценная соцсеть с лентой, историями и подписками. Если нужно только общение без лишнего контента, переключитесь на режим “Только чаты”. Переключить режим можно в любой момент." : {
|
||||||
|
|
||||||
@ -2300,6 +2309,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"Сброс пароля" : {
|
||||||
|
|
||||||
},
|
},
|
||||||
"Сбросить по умолчанию" : {
|
"Сбросить по умолчанию" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
|
|||||||
@ -83,6 +83,7 @@ struct PasswordLoginView: View {
|
|||||||
@State private var showLegacySupportNotice = false
|
@State private var showLegacySupportNotice = false
|
||||||
@State private var isShowingTerms = false
|
@State private var isShowingTerms = false
|
||||||
@State private var hasResetTermsOnAppear = false
|
@State private var hasResetTermsOnAppear = false
|
||||||
|
@State private var isShowingForgotPassword = false
|
||||||
@FocusState private var focusedField: Field?
|
@FocusState private var focusedField: Field?
|
||||||
|
|
||||||
private enum Field: Hashable {
|
private enum Field: Hashable {
|
||||||
@ -199,12 +200,9 @@ struct PasswordLoginView: View {
|
|||||||
.disabled(!isLoginButtonEnabled)
|
.disabled(!isLoginButtonEnabled)
|
||||||
|
|
||||||
Button(action: {
|
Button(action: {
|
||||||
viewModel.hasAcceptedTerms = false
|
isShowingForgotPassword = true
|
||||||
withAnimation {
|
|
||||||
viewModel.showRegistration()
|
|
||||||
}
|
|
||||||
}) {
|
}) {
|
||||||
Text(NSLocalizedString("Нет аккаунта? Регистрация", comment: "Регистрация"))
|
Text(NSLocalizedString("Забыли пароль? Сбросить", comment: ""))
|
||||||
.foregroundColor(.blue)
|
.foregroundColor(.blue)
|
||||||
.frame(maxWidth: .infinity)
|
.frame(maxWidth: .infinity)
|
||||||
}
|
}
|
||||||
@ -253,6 +251,16 @@ struct PasswordLoginView: View {
|
|||||||
.transition(.opacity)
|
.transition(.opacity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.sheet(isPresented: $isShowingForgotPassword) {
|
||||||
|
ForgotPasswordInfoView {
|
||||||
|
isShowingForgotPassword = false
|
||||||
|
withAnimation {
|
||||||
|
viewModel.showPasswordlessRequest()
|
||||||
|
}
|
||||||
|
} onDismiss: {
|
||||||
|
isShowingForgotPassword = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private var themeIconName: String {
|
private var themeIconName: String {
|
||||||
switch themeManager.theme {
|
switch themeManager.theme {
|
||||||
@ -792,3 +800,39 @@ struct LoginView_Previews: PreviewProvider {
|
|||||||
return LoginView(viewModel: viewModel)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user