51 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
import SwiftUI
 | 
						|
 | 
						|
struct SecuritySettingsView: View {
 | 
						|
    @ObservedObject var viewModel: LoginViewModel
 | 
						|
    @State private var isTwoFactorActive = false
 | 
						|
    @State private var isEmailSettingsActive = false
 | 
						|
 | 
						|
    var body: some View {
 | 
						|
        List {
 | 
						|
            Section(header: Text(NSLocalizedString("Аутентификация", comment: "Раздел настроек безопасности для аутентификации"))) {
 | 
						|
                NavigationLink(isActive: $isTwoFactorActive) {
 | 
						|
                    TwoFactorAuthView()
 | 
						|
                } label: {
 | 
						|
                    Label(NSLocalizedString("Двухфакторная аутентификация", comment: "Переход к настройкам двухфакторной аутентификации"), systemImage: "lock.shield")
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            Section(header: Text(NSLocalizedString("Email", comment: "Раздел настроек безопасности для email"))) {
 | 
						|
                NavigationLink(isActive: $isEmailSettingsActive) {
 | 
						|
                    EmailSecuritySettingsView()
 | 
						|
                } label: {
 | 
						|
                    Label(NSLocalizedString("Настройки email", comment: "Переход к настройкам безопасности email"), systemImage: "envelope")
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        .listStyle(.insetGrouped)
 | 
						|
        .navigationTitle(NSLocalizedString("Безопасность", comment: "Заголовок экрана настроек безопасности"))
 | 
						|
        .navigationBarTitleDisplayMode(.inline)
 | 
						|
        .onAppear { handleTwoFactorOnboardingIfNeeded() }
 | 
						|
        .onChange(of: viewModel.onboardingDestination) { _ in
 | 
						|
            handleTwoFactorOnboardingIfNeeded()
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    private func handleTwoFactorOnboardingIfNeeded() {
 | 
						|
        guard viewModel.onboardingDestination == .twoFactor else { return }
 | 
						|
        isTwoFactorActive = true
 | 
						|
        viewModel.onboardingDestination = nil
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
#if DEBUG
 | 
						|
struct SecuritySettingsView_Previews: PreviewProvider {
 | 
						|
    static var previews: some View {
 | 
						|
        NavigationView {
 | 
						|
            SecuritySettingsView(viewModel: LoginViewModel())
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
#endif
 |