From aaff2e1e1528077b596a22904c6cae884a283c6c Mon Sep 17 00:00:00 2001 From: Abubakar Suleiman Date: Thu, 28 May 2020 00:40:36 +0100 Subject: [PATCH] fix crash on disconnect button (#692) --- .../Features/Overview/OverviewViewController.swift | 13 +++++++++---- .../Wallets/WalletSettingsViewController.swift | 10 +++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Decred Wallet/Features/Overview/OverviewViewController.swift b/Decred Wallet/Features/Overview/OverviewViewController.swift index a9717351f..e14639f9a 100644 --- a/Decred Wallet/Features/Overview/OverviewViewController.swift +++ b/Decred Wallet/Features/Overview/OverviewViewController.swift @@ -350,14 +350,19 @@ class OverviewViewController: UIViewController { // Handle action of rescan, sync connect/reconnect/cancel button click based on sync/network status @IBAction func syncConnectionButtonTap(_ sender: Any) { if SyncManager.shared.isRescanning { - WalletLoader.shared.multiWallet.cancelRescan() + DispatchQueue.global(qos: .userInitiated).async { + WalletLoader.shared.multiWallet.cancelRescan() + } } else if SyncManager.shared.isSynced || SyncManager.shared.isSyncing { - WalletLoader.shared.multiWallet.cancelSync() + DispatchQueue.global(qos: .userInitiated).async { + WalletLoader.shared.multiWallet.cancelSync() + } } else { SyncManager.shared.startSync(allowSyncOnCellular: Settings.syncOnCellular) } - - self.updateSyncConnectionButtonTextAndIcon() + DispatchQueue.main.async { + self.updateSyncConnectionButtonTextAndIcon() + } } @IBAction func showOrHideSyncDetails(_ sender: Any) { diff --git a/Decred Wallet/Features/Wallets/WalletSettingsViewController.swift b/Decred Wallet/Features/Wallets/WalletSettingsViewController.swift index 1fe683e81..1b90ad14a 100644 --- a/Decred Wallet/Features/Wallets/WalletSettingsViewController.swift +++ b/Decred Wallet/Features/Wallets/WalletSettingsViewController.swift @@ -162,9 +162,13 @@ class WalletSettingsViewController: UIViewController { if WalletLoader.shared.multiWallet.openedWalletsCount() == 0 { Settings.clear() - WalletLoader.shared.multiWallet.shutdown() - let startScreen = Storyboard.Main.initialViewController() - AppDelegate.shared.setAndDisplayRootViewController(startScreen!) + DispatchQueue.global(qos: .userInitiated).async { + WalletLoader.shared.multiWallet.shutdown() + DispatchQueue.main.async { + let startScreen = Storyboard.Main.initialViewController() + AppDelegate.shared.setAndDisplayRootViewController(startScreen!) + } + } } else { self.dismissView() }