]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Present tunnel activation errors from the window when possible
authorRoopesh Chander <roop@roopc.net>
Sat, 5 Jan 2019 08:56:20 +0000 (14:26 +0530)
committerRoopesh Chander <roop@roopc.net>
Mon, 14 Jan 2019 09:22:33 +0000 (14:52 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/macOS/AppDelegate.swift
WireGuard/WireGuard/UI/macOS/StatusMenu.swift

index 2403d0fc596a3f9e8b76a97c498fe0d149b70932..994495ef8c5d7400cc36e35a151fab43ca47c204 100644 (file)
@@ -20,29 +20,11 @@ class AppDelegate: NSObject, NSApplicationDelegate {
             self.statusItem = createStatusBarItem(with: statusMenu)
 
             tunnelsManager.tunnelsListDelegate = statusMenu
-            tunnelsManager.activationDelegate = self
+            tunnelsManager.activationDelegate = statusMenu
         }
     }
 }
 
-extension AppDelegate: TunnelsManagerActivationDelegate {
-    func tunnelActivationAttemptFailed(tunnel: TunnelContainer, error: TunnelsManagerActivationAttemptError) {
-        ErrorPresenter.showErrorAlert(error: error, from: nil)
-    }
-
-    func tunnelActivationAttemptSucceeded(tunnel: TunnelContainer) {
-        // Nothing to do
-    }
-
-    func tunnelActivationFailed(tunnel: TunnelContainer, error: TunnelsManagerActivationError) {
-        ErrorPresenter.showErrorAlert(error: error, from: nil)
-    }
-
-    func tunnelActivationSucceeded(tunnel: TunnelContainer) {
-        // Nothing to do
-    }
-}
-
 func createStatusBarItem(with statusMenu: StatusMenu) -> NSStatusItem {
     let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)
     if let statusBarImage = NSImage(named: "WireGuardMacStatusBarIcon") {
index 388c3cc3135706c072ac8e2cbf200452a74db452..b8693c9119769bebb06c2269d9565d4a2f4e019a 100644 (file)
@@ -217,3 +217,29 @@ extension StatusMenu: TunnelsManagerListDelegate {
         manageTunnelsRootVC?.tunnelsListVC?.tunnelRemoved(at: index)
     }
 }
+
+extension StatusMenu: TunnelsManagerActivationDelegate {
+    func tunnelActivationAttemptFailed(tunnel: TunnelContainer, error: TunnelsManagerActivationAttemptError) {
+        if let manageTunnelsRootVC = manageTunnelsRootVC, manageTunnelsWindow.isVisible {
+            ErrorPresenter.showErrorAlert(error: error, from: manageTunnelsRootVC)
+        } else {
+            ErrorPresenter.showErrorAlert(error: error, from: nil)
+        }
+    }
+
+    func tunnelActivationAttemptSucceeded(tunnel: TunnelContainer) {
+        // Nothing to do
+    }
+
+    func tunnelActivationFailed(tunnel: TunnelContainer, error: TunnelsManagerActivationError) {
+        if let manageTunnelsRootVC = manageTunnelsRootVC, manageTunnelsWindow.isVisible {
+            ErrorPresenter.showErrorAlert(error: error, from: manageTunnelsRootVC)
+        } else {
+            ErrorPresenter.showErrorAlert(error: error, from: nil)
+        }
+    }
+
+    func tunnelActivationSucceeded(tunnel: TunnelContainer) {
+        // Nothing to do
+    }
+}