Prevent crash on add and deletion of config.

This commit is contained in:
Jeroen Leenarts 2018-09-15 21:23:47 +02:00
parent 5df512d4fe
commit 39990ab480
1 changed files with 31 additions and 24 deletions

View File

@ -328,42 +328,49 @@ extension AppCoordinator: TunnelsTableViewControllerDelegate {
}
func connect(tunnel: Tunnel, tunnelsTableViewController: TunnelsTableViewController) {
let manager = self.providerManager(for: tunnel)!
let block = {
switch manager.connection.status {
case .invalid, .disconnected:
self.connect(tunnel: tunnel)
default:
break
_ = refreshProviderManagers().then { () -> Promise<Void> in
let manager = self.providerManager(for: tunnel)!
let block = {
switch manager.connection.status {
case .invalid, .disconnected:
self.connect(tunnel: tunnel)
default:
break
}
}
}
if manager.connection.status == .invalid {
manager.loadFromPreferences { (_) in
if manager.connection.status == .invalid {
manager.loadFromPreferences { (_) in
block()
}
} else {
block()
}
} else {
block()
return Promise.value(())
}
}
func disconnect(tunnel: Tunnel, tunnelsTableViewController: TunnelsTableViewController) {
let manager = self.providerManager(for: tunnel)!
let block = {
switch manager.connection.status {
case .connected, .connecting:
self.disconnect(tunnel: tunnel)
default:
break
_ = refreshProviderManagers().then { () -> Promise<Void> in
let manager = self.providerManager(for: tunnel)!
let block = {
switch manager.connection.status {
case .connected, .connecting:
self.disconnect(tunnel: tunnel)
default:
break
}
}
}
if manager.connection.status == .invalid {
manager.loadFromPreferences { (_) in
if manager.connection.status == .invalid {
manager.loadFromPreferences { (_) in
block()
}
} else {
block()
}
} else {
block()
return Promise.value(())
}
}