From 043fb923ae4e4737f402586204bec49d64c436e1 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Fri, 7 Jul 2023 14:54:25 -0500 Subject: [PATCH] [Delta Sync] Displays activity indicator when signing-in MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without an indicator it can feel like the app has froze, when really it’s just preparing to sync. --- .../Syncing/SyncingServicesViewController.swift | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Delta/Settings/Syncing/SyncingServicesViewController.swift b/Delta/Settings/Syncing/SyncingServicesViewController.swift index f948b0f..a0ba12a 100644 --- a/Delta/Settings/Syncing/SyncingServicesViewController.swift +++ b/Delta/Settings/Syncing/SyncingServicesViewController.swift @@ -32,6 +32,7 @@ extension SyncingServicesViewController class SyncingServicesViewController: UITableViewController { @IBOutlet private var syncingEnabledSwitch: UISwitch! + private var activityIndicatorView: UIActivityIndicatorView! private var selectedSyncingService = Settings.syncingService @@ -39,6 +40,12 @@ class SyncingServicesViewController: UITableViewController { super.viewDidLoad() + self.activityIndicatorView = UIActivityIndicatorView(style: .medium) + self.activityIndicatorView.hidesWhenStopped = true + + let barButtonItem = UIBarButtonItem(customView: self.activityIndicatorView) + self.navigationItem.rightBarButtonItem = barButtonItem + self.syncingEnabledSwitch.onTintColor = .deltaPurple self.syncingEnabledSwitch.isOn = (self.selectedSyncingService != nil) } @@ -215,6 +222,8 @@ extension SyncingServicesViewController } else { + self.activityIndicatorView.startAnimating() + SyncManager.shared.authenticate(presentingViewController: self) { (result) in DispatchQueue.main.async { do @@ -233,6 +242,8 @@ extension SyncingServicesViewController let alertController = UIAlertController(title: NSLocalizedString("Failed to Sign In", comment: ""), error: error) self.present(alertController, animated: true, completion: nil) } + + self.activityIndicatorView.stopAnimating() } } }