aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift
diff options
context:
space:
mode:
Diffstat (limited to 'WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift')
-rw-r--r--WireGuard/Coordinators/AppCoordinator+SettingsTableViewControllerDelegate.swift24
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)
+ }
})
}