diff --git a/Xcodes/Backend/AppState.swift b/Xcodes/Backend/AppState.swift index 8c6e686..4764666 100644 --- a/Xcodes/Backend/AppState.swift +++ b/Xcodes/Backend/AppState.swift @@ -14,6 +14,7 @@ class AppState: ObservableObject { @Published var authenticationState: AuthenticationState = .unauthenticated @Published var allVersions: [XcodeVersion] = [] @Published var error: AlertContent? + @Published var authError: AlertContent? @Published var presentingSignInAlert = false @Published var isProcessingRequest = false @Published var secondFactorData: SecondFactorData? @@ -134,8 +135,9 @@ class AppState: ObservableObject { // remove any keychain password if we fail to log with an invalid username or password so it doesn't try again. try? Current.keychain.remove(username) } - - self.error = AlertContent(title: "Error signing in", message: error.legibleLocalizedDescription) + + // 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) case .finished: switch self.authenticationState { case .authenticated, .unauthenticated: diff --git a/Xcodes/Frontend/SignIn/SignIn2FAView.swift b/Xcodes/Frontend/SignIn/SignIn2FAView.swift index b30cf2e..2fb16a5 100644 --- a/Xcodes/Frontend/SignIn/SignIn2FAView.swift +++ b/Xcodes/Frontend/SignIn/SignIn2FAView.swift @@ -38,6 +38,11 @@ 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"))) + } } } diff --git a/Xcodes/Frontend/SignIn/SignInCredentialsView.swift b/Xcodes/Frontend/SignIn/SignInCredentialsView.swift index 72c9b6b..61e0389 100644 --- a/Xcodes/Frontend/SignIn/SignInCredentialsView.swift +++ b/Xcodes/Frontend/SignIn/SignInCredentialsView.swift @@ -42,6 +42,11 @@ 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"))) + } } } diff --git a/Xcodes/Frontend/SignIn/SignInPhoneListView.swift b/Xcodes/Frontend/SignIn/SignInPhoneListView.swift index 5a09788..82072f8 100644 --- a/Xcodes/Frontend/SignIn/SignInPhoneListView.swift +++ b/Xcodes/Frontend/SignIn/SignInPhoneListView.swift @@ -42,8 +42,13 @@ struct SignInPhoneListView: View { } .frame(height: 25) } - .frame(width: 400, height: 200) .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"))) + } } } diff --git a/Xcodes/Frontend/SignIn/SignInSMSView.swift b/Xcodes/Frontend/SignIn/SignInSMSView.swift index 997e6e0..552a73b 100644 --- a/Xcodes/Frontend/SignIn/SignInSMSView.swift +++ b/Xcodes/Frontend/SignIn/SignInSMSView.swift @@ -38,6 +38,11 @@ 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"))) + } } }