]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
on-demand: ActivateOnDemandViewModel: Uniquify SSIDs list
authorRoopesh Chander <roop@roopc.net>
Fri, 8 Mar 2019 06:21:27 +0000 (11:51 +0530)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 18 Mar 2019 05:46:55 +0000 (06:46 +0100)
And if SSIDs list is empty, fall back to .anySSID option

Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift

index a8528182f8f0e20f69d7947d9ec5d1bcf3960a47..55da6e075266f127cea879aac6bf7d05bc66e6c9 100644 (file)
@@ -156,9 +156,23 @@ private extension ActivateOnDemandViewModel {
         case .anySSID:
             return .anySSID
         case .onlySpecificSSIDs:
-            return .onlySpecificSSIDs(selectedSSIDs)
+            let ssids = uniquifiedNonEmptySelectedSSIDs()
+            return ssids.isEmpty ? .anySSID : .onlySpecificSSIDs(selectedSSIDs)
         case .exceptSpecificSSIDs:
-            return .exceptSpecificSSIDs(selectedSSIDs)
+            let ssids = uniquifiedNonEmptySelectedSSIDs()
+            return ssids.isEmpty ? .anySSID : .exceptSpecificSSIDs(selectedSSIDs)
         }
     }
+
+    func uniquifiedNonEmptySelectedSSIDs() -> [String] {
+        let nonEmptySSIDs = selectedSSIDs.filter { !$0.isEmpty }
+        var seenSSIDs = Set<String>()
+        var uniquified = [String]()
+        for ssid in nonEmptySSIDs {
+            guard !seenSSIDs.contains(ssid) else { continue }
+            uniquified.append(ssid)
+            seenSSIDs.insert(ssid)
+        }
+        return uniquified
+    }
 }