diff options
Diffstat (limited to 'Sources/WireGuardApp/UI/iOS/ViewController/MainViewController.swift')
-rw-r--r-- | Sources/WireGuardApp/UI/iOS/ViewController/MainViewController.swift | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/MainViewController.swift b/Sources/WireGuardApp/UI/iOS/ViewController/MainViewController.swift index 8542296..39780f1 100644 --- a/Sources/WireGuardApp/UI/iOS/ViewController/MainViewController.swift +++ b/Sources/WireGuardApp/UI/iOS/ViewController/MainViewController.swift @@ -5,7 +5,9 @@ import UIKit class MainViewController: UISplitViewController { - var tunnelsManager: TunnelsManager? + var tunnelsManager: TunnelsManager? { + return (UIApplication.shared.delegate as? AppDelegate)?.tunnelsManager + } var onTunnelsManagerReady: ((TunnelsManager) -> Void)? var tunnelsListVC: TunnelsListTableViewController? @@ -38,29 +40,24 @@ class MainViewController: UISplitViewController { // On iPad, always show both masterVC and detailVC, even in portrait mode, like the Settings app preferredDisplayMode = .allVisible - // Create the tunnels manager, and when it's ready, inform tunnelsListVC - TunnelsManager.create { [weak self] result in - guard let self = self else { return } - - switch result { - case .failure(let error): - ErrorPresenter.showErrorAlert(error: error, from: self) - case .success(let tunnelsManager): - self.tunnelsManager = tunnelsManager - self.tunnelsListVC?.setTunnelsManager(tunnelsManager: tunnelsManager) - - tunnelsManager.activationDelegate = self - - self.onTunnelsManagerReady?(tunnelsManager) - self.onTunnelsManagerReady = nil - } - } + NotificationCenter.default.addObserver(self, selector: #selector(handleTunnelsManagerReady(_:)), + name: AppDelegate.tunnelsManagerReadyNotificationName, object: nil) } func allTunnelNames() -> [String]? { guard let tunnelsManager = self.tunnelsManager else { return nil } return tunnelsManager.mapTunnels { $0.name } } + + @objc + func handleTunnelsManagerReady(_ notification: Notification) { + guard let tunnelsManager = self.tunnelsManager else { return } + + self.onTunnelsManagerReady?(tunnelsManager) + self.onTunnelsManagerReady = nil + + NotificationCenter.default.removeObserver(self, name: AppDelegate.tunnelsManagerReadyNotificationName, object: nil) + } } extension MainViewController: TunnelsManagerActivationDelegate { |