import Foundation import LocalAuthentication @MainActor final class LoginViewModel: ObservableObject { @Published var showMoreSheet = false @Published var isAuthenticating = false @Published var authError: String? = nil var onAuthenticated: (() -> Void)? func authenticateWithFaceID() { isAuthenticating = true authError = nil let context = LAContext() var error: NSError? guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else { authError = "Face ID not available" isAuthenticating = false return } context.evaluatePolicy( .deviceOwnerAuthenticationWithBiometrics, localizedReason: "Sign in to NASBackup" ) { [weak self] success, evalError in Task { @MainActor in self?.isAuthenticating = false if success { self?.onAuthenticated?() } else { self?.authError = evalError?.localizedDescription ?? "Authentication failed" } } } } }