]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
UI: TunnelsManager: Add TunnelContainer.hasOnDemandRules
authorRoopesh Chander <roop@roopc.net>
Sat, 24 Jul 2021 18:23:31 +0000 (23:53 +0530)
committerRoopesh Chander <roop@roopc.net>
Tue, 27 Jul 2021 21:48:01 +0000 (03:18 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
Sources/WireGuardApp/Tunnel/TunnelsManager.swift

index 1e06671fbc3e34df936462136949ab56f06b71ab..c73891e441bbb2e66d8c714a00b7fd512f330513 100644 (file)
@@ -498,6 +498,7 @@ class TunnelContainer: NSObject {
     @objc dynamic var status: TunnelStatus
 
     @objc dynamic var isActivateOnDemandEnabled: Bool
+    @objc dynamic var hasOnDemandRules: Bool
 
     var isAttemptingActivation = false {
         didSet {
@@ -524,7 +525,12 @@ class TunnelContainer: NSObject {
     var activationTimer: Timer?
     var deactivationTimer: Timer?
 
-    fileprivate var tunnelProvider: NETunnelProviderManager
+    fileprivate var tunnelProvider: NETunnelProviderManager {
+        didSet {
+            isActivateOnDemandEnabled = tunnelProvider.isOnDemandEnabled
+            hasOnDemandRules = !(tunnelProvider.onDemandRules ?? []).isEmpty
+        }
+    }
 
     var tunnelConfiguration: TunnelConfiguration? {
         return tunnelProvider.tunnelConfiguration
@@ -545,6 +551,7 @@ class TunnelContainer: NSObject {
         let status = TunnelStatus(from: tunnel.connection.status)
         self.status = status
         isActivateOnDemandEnabled = tunnel.isOnDemandEnabled
+        hasOnDemandRules = !(tunnel.onDemandRules ?? []).isEmpty
         tunnelProvider = tunnel
         super.init()
     }
@@ -571,7 +578,6 @@ class TunnelContainer: NSObject {
             return
         }
         status = TunnelStatus(from: tunnelProvider.connection.status)
-        isActivateOnDemandEnabled = tunnelProvider.isOnDemandEnabled
     }
 
     fileprivate func startActivation(recursionCount: UInt = 0, lastError: Error? = nil, activationDelegate: TunnelsManagerActivationDelegate?) {