From 77d4a02139b788362aa4027a81949d8a13e50da3 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Wed, 23 Jan 2019 12:51:05 +0530 Subject: [PATCH] iOS: Fix handling of deletion outside app Signed-off-by: Roopesh Chander --- .../ViewController/MainViewController.swift | 24 ------------------- .../TunnelsListTableViewController.swift | 14 +++++++++++ 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift index ac04151..48cb7b0 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift @@ -8,7 +8,6 @@ class MainViewController: UISplitViewController { var tunnelsManager: TunnelsManager? var onTunnelsManagerReady: ((TunnelsManager) -> Void)? var tunnelsListVC: TunnelsListTableViewController? - private var foregroundObservationToken: AnyObject? init() { let detailVC = UIViewController() @@ -57,29 +56,6 @@ 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) - } - } - - } } } diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift index 058063d..6a2f3a1 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift @@ -252,7 +252,21 @@ extension TunnelsListTableViewController: TunnelsManagerListDelegate { } func tunnelRemoved(at index: Int) { + let selectedIndex = tableView.indexPathForSelectedRow?.row tableView.deleteRows(at: [IndexPath(row: index, section: 0)], with: .automatic) centeredAddButton.isHidden = tunnelsManager?.numberOfTunnels() ?? 0 > 0 + if let selectedIndex = selectedIndex, selectedIndex == index, let splitViewController = splitViewController { + if splitViewController.isCollapsed != false { + (splitViewController.viewControllers[0] as? UINavigationController)?.popViewController(animated: false) + } else { + let detailVC = UIViewController() + detailVC.view.backgroundColor = .white + let detailNC = UINavigationController(rootViewController: detailVC) + splitViewController.showDetailViewController(detailNC, sender: self) + } + if let presentedNavController = self.presentedViewController as? UINavigationController, presentedNavController.viewControllers.first is TunnelEditTableViewController { + self.presentedViewController?.dismiss(animated: false, completion: nil) + } + } } }