diff --git a/Passepartout-iOS/Scenes/NetworkSettingsViewController.swift b/Passepartout-iOS/Scenes/NetworkSettingsViewController.swift index 30f18a8d..ff649981 100644 --- a/Passepartout-iOS/Scenes/NetworkSettingsViewController.swift +++ b/Passepartout-iOS/Scenes/NetworkSettingsViewController.swift @@ -48,25 +48,14 @@ private struct Offsets { static let proxyBypass = 2 } -// FIXME: init networkSettings with HOST profile.sessionConfiguration -// FIXME: omit "Client" for PROVIDER - class NetworkSettingsViewController: UITableViewController { var profile: ConnectionProfile? - private lazy var networkChoices: ProfileNetworkChoices = { - if let choices = profile?.networkChoices { - return choices - } - if let _ = profile as? ProviderConnectionProfile { - return ProfileNetworkChoices(choice: .server) - } - return ProfileNetworkChoices(choice: .client) - }() + private lazy var networkChoices = ProfileNetworkChoices.with(profile: profile) + + private lazy var clientNetworkSettings = profile?.clientNetworkSettings private let networkSettings = ProfileNetworkSettings() - - private lazy var clientNetworkSettings = profile?.clientNetworkSettings // MARK: TableModelHost @@ -135,23 +124,8 @@ class NetworkSettingsViewController: UITableViewController { override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) - - profile?.networkChoices = networkChoices - if networkChoices.gateway == .manual { - let settings = profile?.manualNetworkSettings ?? ProfileNetworkSettings() - settings.copyGateway(from: networkSettings) - profile?.manualNetworkSettings = settings - } - if networkChoices.dns == .manual { - let settings = profile?.manualNetworkSettings ?? ProfileNetworkSettings() - settings.copyDNS(from: networkSettings) - profile?.manualNetworkSettings = settings - } - if networkChoices.proxy == .manual { - let settings = profile?.manualNetworkSettings ?? ProfileNetworkSettings() - settings.copyProxy(from: networkSettings) - profile?.manualNetworkSettings = settings - } + + commitChanges() } // MARK: Actions @@ -231,6 +205,21 @@ class NetworkSettingsViewController: UITableViewController { log.debug("Network settings: \(networkSettings)") } + + private func commitChanges() { + let settings = profile?.manualNetworkSettings ?? ProfileNetworkSettings() + profile?.networkChoices = networkChoices + if networkChoices.gateway == .manual { + settings.copyGateway(from: networkSettings) + } + if networkChoices.dns == .manual { + settings.copyDNS(from: networkSettings) + } + if networkChoices.proxy == .manual { + settings.copyProxy(from: networkSettings) + } + profile?.manualNetworkSettings = settings + } } // MARK: - diff --git a/Passepartout-iOS/Scenes/Organizer/OrganizerViewController.swift b/Passepartout-iOS/Scenes/Organizer/OrganizerViewController.swift index fa00011a..97020af1 100644 --- a/Passepartout-iOS/Scenes/Organizer/OrganizerViewController.swift +++ b/Passepartout-iOS/Scenes/Organizer/OrganizerViewController.swift @@ -183,16 +183,7 @@ class OrganizerViewController: UITableViewController, TableModelHost { } private func addNewProvider() { - var names = Set(InfrastructureFactory.shared.allNames) - var createdNames: [Infrastructure.Name] = [] - providers.forEach { - guard let name = Infrastructure.Name(rawValue: $0) else { - return - } - createdNames.append(name) - } - names.formSymmetricDifference(createdNames) - + let names = service.availableProviderNames() guard !names.isEmpty else { let alert = Macros.alert( L10n.Core.Organizer.Sections.Providers.header, @@ -202,8 +193,7 @@ class OrganizerViewController: UITableViewController, TableModelHost { present(alert, animated: true, completion: nil) return } - - availableProviderNames = names.sorted() + availableProviderNames = names perform(segue: StoryboardSegue.Organizer.addProviderSegueIdentifier) } diff --git a/Submodules/Core b/Submodules/Core index 2d5f1f6f..7f4dd3c8 160000 --- a/Submodules/Core +++ b/Submodules/Core @@ -1 +1 @@ -Subproject commit 2d5f1f6f0d4d8d8353543da547d6b531beab1894 +Subproject commit 7f4dd3c8cd031ebe536665871f5e76b15d36287e