From bd339e2876545388f3c4197d0a74eb67adb48738 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Fri, 8 Mar 2019 11:51:27 +0530 Subject: on-demand: ActivateOnDemandViewModel: Uniquify SSIDs list And if SSIDs list is empty, fall back to .anySSID option Signed-off-by: Roopesh Chander --- WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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 + } } -- cgit v1.2.3-59-g8ed1b