From a3e910139761327fbaff84b5e47c5702582f6c59 Mon Sep 17 00:00:00 2001 From: Brandon Evans Date: Mon, 4 Jan 2021 16:23:35 -0700 Subject: [PATCH] Replace .alert with .emittingError --- Xcodes/Backend/AppState+Update.swift | 2 +- Xcodes/Backend/AppState.swift | 13 ++++++++----- Xcodes/Frontend/MainWindow.swift | 7 ++----- Xcodes/Frontend/SignIn/SignIn2FAView.swift | 6 +----- Xcodes/Frontend/SignIn/SignInCredentialsView.swift | 6 +----- Xcodes/Frontend/SignIn/SignInPhoneListView.swift | 6 +----- Xcodes/Frontend/SignIn/SignInSMSView.swift | 6 +----- 7 files changed, 15 insertions(+), 31 deletions(-) diff --git a/Xcodes/Backend/AppState+Update.swift b/Xcodes/Backend/AppState+Update.swift index 907b7e2..9400bc7 100644 --- a/Xcodes/Backend/AppState+Update.swift +++ b/Xcodes/Backend/AppState+Update.swift @@ -38,7 +38,7 @@ extension AppState { receiveCompletion: { [unowned self] completion in switch completion { case let .failure(error): - self.error = AlertContent(title: "Update Error", message: error.legibleLocalizedDescription) + self.error = error case .finished: Current.defaults.setDate(Current.date(), forKey: "lastUpdated") } diff --git a/Xcodes/Backend/AppState.swift b/Xcodes/Backend/AppState.swift index 4dfa58d..61f559e 100644 --- a/Xcodes/Backend/AppState.swift +++ b/Xcodes/Backend/AppState.swift @@ -27,13 +27,16 @@ class AppState: ObservableObject { } @Published var updatePublisher: AnyCancellable? var isUpdating: Bool { updatePublisher != nil } - @Published var error: AlertContent? - @Published var authError: AlertContent? @Published var presentingSignInAlert = false @Published var isProcessingAuthRequest = false @Published var secondFactorData: SecondFactorData? @Published var xcodeBeingConfirmedForUninstallation: Xcode? @Published var helperInstallState: HelperInstallState = .notInstalled + + // MARK: - Errors + + @Published var error: Error? + @Published var authError: Error? init() { try? loadCachedAvailableXcodes() @@ -158,7 +161,7 @@ class AppState: ObservableObject { } // This error message is not user friendly... need to extract some meaningful data in the different cases - self.authError = AlertContent(title: "Error signing in", message: error.legibleLocalizedDescription) + self.authError = error case .finished: switch self.authenticationState { case .authenticated, .unauthenticated: @@ -220,7 +223,7 @@ class AppState: ObservableObject { .sink( receiveCompletion: { [unowned self] completion in if case let .failure(error) = completion { - self.error = AlertContent(title: "Error uninstalling Xcode", message: error.legibleLocalizedDescription) + self.error = error } self.uninstallPublisher = nil }, @@ -251,7 +254,7 @@ class AppState: ObservableObject { .sink( receiveCompletion: { [unowned self] completion in if case let .failure(error) = completion { - self.error = AlertContent(title: "Error selecting Xcode", message: error.legibleLocalizedDescription) + self.error = error } self.selectPublisher = nil }, diff --git a/Xcodes/Frontend/MainWindow.swift b/Xcodes/Frontend/MainWindow.swift index 5052e77..4e1faf8 100644 --- a/Xcodes/Frontend/MainWindow.swift +++ b/Xcodes/Frontend/MainWindow.swift @@ -1,3 +1,4 @@ +import ErrorHandling import SwiftUI struct MainWindow: View { @@ -31,11 +32,7 @@ struct MainWindow: View { ) .navigationSubtitle(subtitleText) .frame(minWidth: 600, maxWidth: .infinity, minHeight: 300, maxHeight: .infinity) - .alert(item: $appState.error) { error in - Alert(title: Text(error.title), - message: Text(verbatim: error.message), - dismissButton: .default(Text("OK"))) - } + .emittingError($appState.error, recoveryHandler: { _ in }) .sheet(isPresented: $appState.secondFactorData.isNotNil) { secondFactorView(appState.secondFactorData!) .environmentObject(appState) diff --git a/Xcodes/Frontend/SignIn/SignIn2FAView.swift b/Xcodes/Frontend/SignIn/SignIn2FAView.swift index d7fad25..37f4830 100644 --- a/Xcodes/Frontend/SignIn/SignIn2FAView.swift +++ b/Xcodes/Frontend/SignIn/SignIn2FAView.swift @@ -34,11 +34,7 @@ struct SignIn2FAView: View { .frame(height: 25) } .padding() - .alert(item: $appState.authError) { error in - Alert(title: Text(error.title), - message: Text(verbatim: error.message), - dismissButton: .default(Text("OK"))) - } + .emittingError($appState.authError, recoveryHandler: { _ in }) } } diff --git a/Xcodes/Frontend/SignIn/SignInCredentialsView.swift b/Xcodes/Frontend/SignIn/SignInCredentialsView.swift index 89d78e4..accc54a 100644 --- a/Xcodes/Frontend/SignIn/SignInCredentialsView.swift +++ b/Xcodes/Frontend/SignIn/SignInCredentialsView.swift @@ -38,11 +38,7 @@ struct SignInCredentialsView: View { .frame(height: 25) } .padding() - .alert(item: $appState.authError) { error in - Alert(title: Text(error.title), - message: Text(verbatim: error.message), - dismissButton: .default(Text("OK"))) - } + .emittingError($appState.authError, recoveryHandler: { _ in }) } } diff --git a/Xcodes/Frontend/SignIn/SignInPhoneListView.swift b/Xcodes/Frontend/SignIn/SignInPhoneListView.swift index 4e6b730..e2dae0d 100644 --- a/Xcodes/Frontend/SignIn/SignInPhoneListView.swift +++ b/Xcodes/Frontend/SignIn/SignInPhoneListView.swift @@ -39,11 +39,7 @@ struct SignInPhoneListView: View { } .padding() .frame(width: 400, height: 200) - .alert(item: $appState.authError) { error in - Alert(title: Text(error.title), - message: Text(verbatim: error.message), - dismissButton: .default(Text("OK"))) - } + .emittingError($appState.authError, recoveryHandler: { _ in }) } } diff --git a/Xcodes/Frontend/SignIn/SignInSMSView.swift b/Xcodes/Frontend/SignIn/SignInSMSView.swift index 75988d4..51c2c0a 100644 --- a/Xcodes/Frontend/SignIn/SignInSMSView.swift +++ b/Xcodes/Frontend/SignIn/SignInSMSView.swift @@ -34,11 +34,7 @@ struct SignInSMSView: View { .frame(height: 25) } .padding() - .alert(item: $appState.authError) { error in - Alert(title: Text(error.title), - message: Text(verbatim: error.message), - dismissButton: .default(Text("OK"))) - } + .emittingError($appState.authError, recoveryHandler: { _ in }) } }