aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift
diff options
context:
space:
mode:
Diffstat (limited to 'WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift')
-rw-r--r--WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift46
1 files changed, 41 insertions, 5 deletions
diff --git a/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift b/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift
index b5ce633..a852818 100644
--- a/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift
+++ b/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift
@@ -5,13 +5,15 @@ import Foundation
class ActivateOnDemandViewModel {
enum OnDemandField {
+ case onDemand
case nonWiFiInterface
case wiFiInterface
- case ssidDescription
- case ssidEdit
+ case ssid
var localizedUIString: String {
switch self {
+ case .onDemand:
+ return tr("tunnelOnDemandKey")
case .nonWiFiInterface:
#if os(iOS)
return tr("tunnelOnDemandCellular")
@@ -21,8 +23,7 @@ class ActivateOnDemandViewModel {
#error("Unimplemented")
#endif
case .wiFiInterface: return tr("tunnelOnDemandWiFi")
- case .ssidDescription: return tr("tunnelOnDemandSSIDDescription")
- case .ssidEdit: return tr("tunnelOnDemandSSIDEdit")
+ case .ssid: return tr("tunnelOnDemandSSIDsKey")
}
}
}
@@ -48,7 +49,15 @@ class ActivateOnDemandViewModel {
}
extension ActivateOnDemandViewModel {
- convenience init(from option: ActivateOnDemandOption) {
+ convenience init(setting: ActivateOnDemandSetting) {
+ if setting.isActivateOnDemandEnabled {
+ self.init(option: setting.activateOnDemandOption)
+ } else {
+ self.init(option: .none)
+ }
+ }
+
+ convenience init(option: ActivateOnDemandOption) {
self.init()
switch option {
case .none:
@@ -103,6 +112,33 @@ extension ActivateOnDemandViewModel {
}
}
+extension ActivateOnDemandViewModel {
+ var localizedInterfaceDescription: String {
+ switch (isWiFiInterfaceEnabled, isNonWiFiInterfaceEnabled) {
+ case (false, false):
+ return tr("tunnelOnDemandOptionOff")
+ case (true, false):
+ return tr("tunnelOnDemandOptionWiFiOnly")
+ case (false, true):
+ #if os(iOS)
+ return tr("tunnelOnDemandOptionCellularOnly")
+ #elseif os(macOS)
+ return tr("tunnelOnDemandOptionEthernetOnly")
+ #else
+ #error("Unimplemented")
+ #endif
+ case (true, true):
+ #if os(iOS)
+ return tr("tunnelOnDemandOptionWiFiOrCellular")
+ #elseif os(macOS)
+ return tr("tunnelOnDemandOptionWiFiOrEthernet")
+ #else
+ #error("Unimplemented")
+ #endif
+ }
+ }
+}
+
private extension ActivateOnDemandViewModel {
func ssidViewModel(from ssidOption: ActivateOnDemandSSIDOption) -> (OnDemandSSIDOption, [String]) {
switch ssidOption {