From ff1d2546dc1cc3a409afaced864d58dd2e63b110 Mon Sep 17 00:00:00 2001 From: Chad Sykes Date: Sun, 27 Dec 2020 13:10:12 -0700 Subject: [PATCH] Switch out the action button with an activity spinner when processing a request --- Xcodes/Frontend/SignIn/SignIn2FAView.swift | 14 +++++++++++--- .../Frontend/SignIn/SignInCredentialsView.swift | 14 +++++++++++--- Xcodes/Frontend/SignIn/SignInPhoneListView.swift | 15 ++++++++++++--- Xcodes/Frontend/SignIn/SignInSMSView.swift | 14 +++++++++++--- 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/Xcodes/Frontend/SignIn/SignIn2FAView.swift b/Xcodes/Frontend/SignIn/SignIn2FAView.swift index d49f088..b30cf2e 100644 --- a/Xcodes/Frontend/SignIn/SignIn2FAView.swift +++ b/Xcodes/Frontend/SignIn/SignIn2FAView.swift @@ -24,10 +24,18 @@ struct SignIn2FAView: View { .keyboardShortcut(.cancelAction) Button("Send SMS", action: { appState.choosePhoneNumberForSMS(authOptions: authOptions, sessionData: sessionData) }) Spacer() - Button("Continue", action: { appState.submitSecurityCode(.device(code: code), sessionData: sessionData) }) - .keyboardShortcut(.defaultAction) - .disabled(code.count != authOptions.securityCode.length || appState.isProcessingRequest) + if appState.isProcessingRequest { + ProgressView() + .progressViewStyle(CircularProgressViewStyle()) + .scaleEffect(x: 0.5, y: 0.5, anchor: .center) + .padding(.trailing, 22) + } else { + Button("Continue", action: { appState.submitSecurityCode(.device(code: code), sessionData: sessionData) }) + .keyboardShortcut(.defaultAction) + .disabled(code.count != authOptions.securityCode.length) + } } + .frame(height: 25) } .padding() } diff --git a/Xcodes/Frontend/SignIn/SignInCredentialsView.swift b/Xcodes/Frontend/SignIn/SignInCredentialsView.swift index f4f16db..72c9b6b 100644 --- a/Xcodes/Frontend/SignIn/SignInCredentialsView.swift +++ b/Xcodes/Frontend/SignIn/SignInCredentialsView.swift @@ -28,10 +28,18 @@ struct SignInCredentialsView: View { Spacer() Button("Cancel") { isPresented = false } .keyboardShortcut(.cancelAction) - Button("Next") { appState.signIn(username: username, password: password) } - .disabled(username.isEmpty || appState.isProcessingRequest) - .keyboardShortcut(.defaultAction) + if appState.isProcessingRequest { + ProgressView() + .progressViewStyle(CircularProgressViewStyle()) + .scaleEffect(x: 0.5, y: 0.5, anchor: .center) + .padding(.horizontal, 8) + } else { + Button("Next") { appState.signIn(username: username, password: password) } + .disabled(username.isEmpty) + .keyboardShortcut(.defaultAction) + } } + .frame(height: 25) } .padding() } diff --git a/Xcodes/Frontend/SignIn/SignInPhoneListView.swift b/Xcodes/Frontend/SignIn/SignInPhoneListView.swift index 2fe8faf..213a4c0 100644 --- a/Xcodes/Frontend/SignIn/SignInPhoneListView.swift +++ b/Xcodes/Frontend/SignIn/SignInPhoneListView.swift @@ -28,10 +28,19 @@ struct SignInPhoneListView: View { Button("Cancel", action: { isPresented = false }) .keyboardShortcut(.cancelAction) Spacer() - Button("Continue", action: { appState.requestSMS(to: authOptions.trustedPhoneNumbers!.first { $0.id == selectedPhoneNumberID }!, authOptions: authOptions, sessionData: sessionData) }) - .keyboardShortcut(.defaultAction) - .disabled(selectedPhoneNumberID == nil || appState.isProcessingRequest) + + if appState.isProcessingRequest { + ProgressView() + .progressViewStyle(CircularProgressViewStyle()) + .scaleEffect(x: 0.5, y: 0.5, anchor: .center) + .padding(.trailing, 22) + } else { + Button("Continue", action: { appState.requestSMS(to: authOptions.trustedPhoneNumbers!.first { $0.id == selectedPhoneNumberID }!, authOptions: authOptions, sessionData: sessionData) }) + .keyboardShortcut(.defaultAction) + .disabled(selectedPhoneNumberID == nil) + } } + .frame(height: 25) } .padding() } diff --git a/Xcodes/Frontend/SignIn/SignInSMSView.swift b/Xcodes/Frontend/SignIn/SignInSMSView.swift index 1fe1e9b..997e6e0 100644 --- a/Xcodes/Frontend/SignIn/SignInSMSView.swift +++ b/Xcodes/Frontend/SignIn/SignInSMSView.swift @@ -24,10 +24,18 @@ struct SignInSMSView: View { Button("Cancel", action: { isPresented = false }) .keyboardShortcut(.cancelAction) Spacer() - Button("Continue", action: { appState.submitSecurityCode(.sms(code: code, phoneNumberId: trustedPhoneNumber.id), sessionData: sessionData) }) - .keyboardShortcut(.defaultAction) - .disabled(code.count != authOptions.securityCode.length || appState.isProcessingRequest) + if appState.isProcessingRequest { + ProgressView() + .progressViewStyle(CircularProgressViewStyle()) + .scaleEffect(x: 0.5, y: 0.5, anchor: .center) + .padding(.trailing, 22) + } else { + Button("Continue", action: { appState.submitSecurityCode(.sms(code: code, phoneNumberId: trustedPhoneNumber.id), sessionData: sessionData) }) + .keyboardShortcut(.defaultAction) + .disabled(code.count != authOptions.securityCode.length) + } } + .frame(height: 25) } .padding() }