From 9098cd1161be1c6e7175fdf48128faed6a4438f5 Mon Sep 17 00:00:00 2001 From: Eric Kuck Date: Fri, 21 Dec 2018 21:59:43 -0600 Subject: Removing a tunnel from iOS's settings is now immediately reflected in app Signed-off-by: Eric Kuck --- .../UI/iOS/ViewController/MainViewController.swift | 26 +++++++++++++++++++++- .../TunnelDetailTableViewController.swift | 9 +------- 2 files changed, 26 insertions(+), 9 deletions(-) (limited to 'WireGuard/WireGuard/UI/iOS/ViewController') diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift index 1e480b9..2798127 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift @@ -7,8 +7,8 @@ class MainViewController: UISplitViewController { var tunnelsManager: TunnelsManager? var onTunnelsManagerReady: ((TunnelsManager) -> Void)? - var tunnelsListVC: TunnelsListTableViewController? + private var foregroundObservationToken: AnyObject? init() { let detailVC = UIViewController() @@ -57,7 +57,31 @@ class MainViewController: UISplitViewController { self.onTunnelsManagerReady?(tunnelsManager) self.onTunnelsManagerReady = nil } + + foregroundObservationToken = NotificationCenter.default.addObserver(forName: UIApplication.willEnterForegroundNotification, object: nil, queue: OperationQueue.main) { [weak self] _ in + guard let self = self else { return } + self.tunnelsManager?.reload { [weak self] hasChanges in + guard let self = self, let tunnelsManager = self.tunnelsManager, hasChanges else { return } + + self.tunnelsListVC?.setTunnelsManager(tunnelsManager: tunnelsManager) + + if self.isCollapsed { + (self.viewControllers[0] as? UINavigationController)?.popViewController(animated: false) + } else { + let detailVC = UIViewController() + detailVC.view.backgroundColor = .white + let detailNC = UINavigationController(rootViewController: detailVC) + self.showDetailViewController(detailNC, sender: self) + } + + if let presentedNavController = self.presentedViewController as? UINavigationController, presentedNavController.viewControllers.first is TunnelEditTableViewController { + self.presentedViewController?.dismiss(animated: false, completion: nil) + } + } + + } } + } extension MainViewController: TunnelsManagerActivationDelegate { diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift index 187f7fd..2912e07 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift @@ -3,8 +3,6 @@ import UIKit -// MARK: TunnelDetailTableViewController - class TunnelDetailTableViewController: UITableViewController { private enum Section { @@ -44,11 +42,6 @@ class TunnelDetailTableViewController: UITableViewController { fatalError("init(coder:) has not been implemented") } - deinit { - onDemandStatusObservationToken = nil - statusObservationToken = nil - } - override func viewDidLoad() { super.viewDidLoad() title = tunnelViewModel.interfaceData[.name] @@ -250,7 +243,7 @@ extension TunnelDetailTableViewController { return } } - if self.splitViewController?.isCollapsed ?? true { + if self.splitViewController?.isCollapsed != false { self.navigationController?.navigationController?.popToRootViewController(animated: true) } else { let detailVC = UIViewController() -- cgit v1.2.3-59-g8ed1b