import SwiftUI

struct AppLockSettingsView: View {
    @State private var desiredPassword: String = ""
    @State private var confirmationPassword: String = ""
    @State private var activeAlert: AppLockAlert?
    @FocusState private var focusedField: Field?

    private enum Field: Hashable {
        case desired
        case confirmation
    }

    var body: some View {
        Form {
            Section(header: Text(NSLocalizedString("Пароль-приложение", comment: "Раздел формы установки пароля на приложение"))) {
                SecureField(NSLocalizedString("Введите пароль", comment: "Поле ввода пароля на приложение"), text: $desiredPassword)
                    .focused($focusedField, equals: .desired)

                SecureField(NSLocalizedString("Повторите пароль", comment: "Поле подтверждения пароля на приложение"), text: $confirmationPassword)
                    .focused($focusedField, equals: .confirmation)

                Button(NSLocalizedString("Сохранить пароль", comment: "Кнопка сохранения пароля на приложение")) {
                    handleSaveTapped()
                }
                .disabled(desiredPassword.isEmpty || confirmationPassword.isEmpty)
            }

            Section {
                Text(NSLocalizedString("Настоящая защита приложения появится позже. Пока вы можете ознакомится с макетом.", comment: "Описание заглушки для пароля на приложение"))
                    .font(.callout)
                    .foregroundColor(.secondary)
            }
        }
        .navigationTitle(NSLocalizedString("Пароль на приложение", comment: "Заголовок экрана пароля на приложение"))
        .navigationBarTitleDisplayMode(.inline)
        .onAppear {
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
                focusedField = .desired
            }
        }
        .alert(item: $activeAlert) { alert in
            Alert(
                title: Text(alert.title),
                message: Text(alert.message),
                dismissButton: .default(Text(NSLocalizedString("OK", comment: "Общий текст кнопки OK")))
            )
        }
    }

    private func handleSaveTapped() {
        guard !desiredPassword.isEmpty, desiredPassword == confirmationPassword else {
            activeAlert = AppLockAlert(
                title: NSLocalizedString("Пароли не совпадают", comment: "Заголовок ошибки несовпадения паролей"),
                message: NSLocalizedString("Проверьте ввод и попробуйте снова.", comment: "Сообщение ошибки несовпадения паролей"))
            return
        }

        activeAlert = AppLockAlert(
            title: NSLocalizedString("Скоро", comment: "Заголовок заглушки"),
            message: NSLocalizedString("Защита приложением будет добавлена в будущих обновлениях.", comment: "Сообщение заглушки пароля на приложение")
        )
        desiredPassword.removeAll()
        confirmationPassword.removeAll()
    }
}

private struct AppLockAlert: Identifiable {
    let id = UUID()
    let title: String
    let message: String
}

#if DEBUG
struct AppLockSettingsView_Previews: PreviewProvider {
    static var previews: some View {
        NavigationView {
            AppLockSettingsView()
        }
    }
}
#endif
