]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
iOS: Importing: If tunnelsManager isn't ready yet, we should wait for it
authorRoopesh Chander <roop@roopc.net>
Thu, 13 Jun 2019 17:31:47 +0000 (23:01 +0530)
committerRoopesh Chander <roop@roopc.net>
Thu, 13 Jun 2019 17:32:54 +0000 (23:02 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/iOS/AppDelegate.swift
WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift

index 8884d44cfeb1e000597dc36e522314e911505427..41a136ec6e4aeff284f886db6be0b149dd3967cf 100644 (file)
@@ -34,10 +34,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     }
 
     func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
-        guard let tunnelsManager = mainVC?.tunnelsManager else { return true }
-        TunnelImporter.importFromFile(urls: [url], into: tunnelsManager, sourceVC: mainVC, errorPresenterType: ErrorPresenter.self) {
-            _ = FileManager.deleteFile(at: url)
-        }
+        mainVC?.importFromDisposableFile(url: url)
         return true
     }
 
index c61302beae7f107cc9461c9ae56f26676f1c5fdd..b37a4d456b7bbd67326b456d37a25d9a77d5b91c 100644 (file)
@@ -109,6 +109,19 @@ extension MainViewController {
             onTunnelsManagerReady = showTunnelDetailBlock
         }
     }
+
+    func importFromDisposableFile(url: URL) {
+        let importFromFileBlock: (TunnelsManager) -> Void = { [weak self] tunnelsManager in
+            TunnelImporter.importFromFile(urls: [url], into: tunnelsManager, sourceVC: self, errorPresenterType: ErrorPresenter.self) {
+                _ = FileManager.deleteFile(at: url)
+            }
+        }
+        if let tunnelsManager = tunnelsManager {
+            importFromFileBlock(tunnelsManager)
+        } else {
+            onTunnelsManagerReady = importFromFileBlock
+        }
+    }
 }
 
 extension MainViewController: UISplitViewControllerDelegate {