diff options
Diffstat (limited to 'WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift')
-rw-r--r-- | WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift b/WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift index 5784f5d..d19422c 100644 --- a/WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift +++ b/WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift @@ -7,22 +7,28 @@ import PromiseKit import NetworkExtension enum GoVersionCoordinatorError: Error { - case noSession + case noEnabledSession + case noResponse } extension AppCoordinator: SettingsTableViewControllerDelegate { func goVersionInformation() -> Promise<String> { return Promise(resolver: { (resolver) in - guard let session = self.providerManagers?.first?.connection as? NETunnelProviderSession else { - resolver.reject(GoVersionCoordinatorError.noSession) + guard let session = self.providerManagers?.first(where: { $0.isEnabled })?.connection as? NETunnelProviderSession else { + resolver.reject(GoVersionCoordinatorError.noEnabledSession) return } - try session.sendProviderMessage(ExtensionMessage.requestVersion.data, responseHandler: { (data) in - guard let responseString = String(data: data!, encoding: .utf8) else { - return - } - resolver.fulfill(responseString) - }) + do { + try session.sendProviderMessage(ExtensionMessage.requestVersion.data, responseHandler: { (data) in + guard let data = data, let responseString = String(data: data, encoding: .utf8) else { + resolver.reject(GoVersionCoordinatorError.noResponse) + return + } + resolver.fulfill(responseString) + }) + } catch { + resolver.reject(error) + } }) } |