diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-12-22 00:28:18 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-12-22 00:28:18 +0100 |
commit | 4ed646973ee4e1871cda792083bf4fe70afa8c3f (patch) | |
tree | 4f7df25ce19ada60ed792c729e562cb2b367a72b /WireGuard/WireGuard/UI/TunnelViewModel.swift | |
parent | Fix paren typo (diff) | |
download | wireguard-apple-4ed646973ee4e1871cda792083bf4fe70afa8c3f.tar.xz wireguard-apple-4ed646973ee4e1871cda792083bf4fe70afa8c3f.zip |
Move name from interface to tunnel
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'WireGuard/WireGuard/UI/TunnelViewModel.swift')
-rw-r--r-- | WireGuard/WireGuard/UI/TunnelViewModel.swift | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/WireGuard/WireGuard/UI/TunnelViewModel.swift b/WireGuard/WireGuard/UI/TunnelViewModel.swift index 0b5b8c0..0be3cb8 100644 --- a/WireGuard/WireGuard/UI/TunnelViewModel.swift +++ b/WireGuard/WireGuard/UI/TunnelViewModel.swift @@ -66,6 +66,7 @@ class TunnelViewModel { var scratchpad = [InterfaceField: String]() var fieldsWithError = Set<InterfaceField>() var validatedConfiguration: InterfaceConfiguration? + var validatedName: String? subscript(field: InterfaceField) -> String { get { @@ -83,6 +84,7 @@ class TunnelViewModel { populateScratchpad() } validatedConfiguration = nil + validatedName = nil if stringValue.isEmpty { scratchpad.removeValue(forKey: field) } else { @@ -102,7 +104,8 @@ class TunnelViewModel { func populateScratchpad() { // Populate the scratchpad from the configuration object guard let config = validatedConfiguration else { return } - scratchpad[.name] = config.name + guard let name = validatedName else { return } + scratchpad[.name] = name scratchpad[.privateKey] = config.privateKey.base64EncodedString() scratchpad[.publicKey] = config.publicKey.base64EncodedString() if !config.addresses.isEmpty { @@ -120,10 +123,10 @@ class TunnelViewModel { } //swiftlint:disable:next cyclomatic_complexity function_body_length - func save() -> SaveResult<InterfaceConfiguration> { - if let validatedConfiguration = validatedConfiguration { + func save() -> SaveResult<(String, InterfaceConfiguration)> { + if let config = validatedConfiguration, let name = validatedName { // It's already validated and saved - return .saved(validatedConfiguration) + return .saved((name, config)) } fieldsWithError.removeAll() guard let name = scratchpad[.name]?.trimmingCharacters(in: .whitespacesAndNewlines), (!name.isEmpty) else { @@ -138,7 +141,7 @@ class TunnelViewModel { fieldsWithError.insert(.privateKey) return .error(tr("alertInvalidInterfaceMessagePrivateKeyInvalid")) } - var config = InterfaceConfiguration(name: name, privateKey: privateKey) + var config = InterfaceConfiguration(privateKey: privateKey) var errorMessages = [String]() if let addressesString = scratchpad[.addresses] { var addresses = [IPAddressRange]() @@ -184,7 +187,8 @@ class TunnelViewModel { guard errorMessages.isEmpty else { return .error(errorMessages.first!) } validatedConfiguration = config - return .saved(config) + validatedName = name + return .saved((name, config)) } func filterFieldsWithValueOrControl(interfaceFields: [InterfaceField]) -> [InterfaceField] { @@ -390,6 +394,7 @@ class TunnelViewModel { var peersData = [PeerData]() if let tunnelConfiguration = tunnelConfiguration { interfaceData.validatedConfiguration = tunnelConfiguration.interface + interfaceData.validatedName = tunnelConfiguration.name for (index, peerConfiguration) in tunnelConfiguration.peers.enumerated() { let peerData = PeerData(index: index) peerData.validatedConfiguration = peerConfiguration @@ -453,7 +458,7 @@ class TunnelViewModel { return .error(tr("alertInvalidPeerMessagePublicKeyDuplicated")) } - let tunnelConfiguration = TunnelConfiguration(interface: interfaceConfiguration, peers: peerConfigurations) + let tunnelConfiguration = TunnelConfiguration(name: interfaceConfiguration.0, interface: interfaceConfiguration.1, peers: peerConfigurations) return .saved(tunnelConfiguration) } } |