From: Roopesh Chander Date: Fri, 8 Mar 2019 06:21:27 +0000 (+0530) Subject: on-demand: ActivateOnDemandViewModel: Uniquify SSIDs list X-Git-Tag: 0.0.20190319-1~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd339e2876545388f3c4197d0a74eb67adb48738;p=thirdparty%2Fwireguard-apple.git on-demand: ActivateOnDemandViewModel: Uniquify SSIDs list And if SSIDs list is empty, fall back to .anySSID option Signed-off-by: Roopesh Chander --- diff --git a/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift b/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift index a852818..55da6e0 100644 --- a/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift +++ b/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift @@ -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() + var uniquified = [String]() + for ssid in nonEmptySSIDs { + guard !seenSSIDs.contains(ssid) else { continue } + uniquified.append(ssid) + seenSSIDs.insert(ssid) + } + return uniquified + } }