fileprivate func imOnlineButtonLogic() {
SWFAnalytics.sendButton("goOnlineButton", context: "\(type(of: self))")
if imOnlineSwitch.isOn == false {
SWLocal().cancelAlert()
}
if imOnlineSwitch.isOn {
// try to go online
// check location permissions
if CLLocationManager.authorizationStatus() == .denied || CLLocationManager.authorizationStatus() == .restricted {
UIAlertController.showAlert(in: self, withTitle: Localization.shared.locationService, message: Localization.shared.locationServiceMessage, cancelButtonTitle: "OK", destructiveButtonTitle: nil, otherButtonTitles: nil, tap: nil)
updateImOnlineLabel()
Insomnia.insomniaInstance?.mode = .always
} else {
SVProgressHUD.show()
SWFApiManager.shared().getDriverDeclarations { [weak self] (success, array, error) in
SVProgressHUD.dismiss()
if success {
if let declarations = array as? [Declaration], declarations.count > 0 {
self?.declarations = declarations
self?.performSegue(withIdentifier: "declarationsSegue", sender: self)
} else {
self?.doGoOnline()
}
} else {
Insomnia.insomniaInstance?.mode = .disabled
self?.updateImOnlineLabel()
self?.showErrorMessage(error: error)
}
}
}
} else {
// try to go offline
SVProgressHUD.show()
SWFApiManager.shared().goOffline { [weak self] (success, error) in
SVProgressHUD.dismiss()
guard let self = self else { return }
if success {
Insomnia.insomniaInstance?.mode = .disabled
SWFSessionManager.shared().setIsOnline(false)
} else {
self.showErrorMessage(error: error)
Insomnia.insomniaInstance?.mode = .always
self.updateImOnlineLabel()
}
self.updateUI()
}
}
}
SWFAnalytics.sendButton("goOnlineButton", context: "\(type(of: self))")
if imOnlineSwitch.isOn == false {
SWLocal().cancelAlert()
}
if imOnlineSwitch.isOn {
// try to go online
// check location permissions
if CLLocationManager.authorizationStatus() == .denied || CLLocationManager.authorizationStatus() == .restricted {
UIAlertController.showAlert(in: self, withTitle: Localization.shared.locationService, message: Localization.shared.locationServiceMessage, cancelButtonTitle: "OK", destructiveButtonTitle: nil, otherButtonTitles: nil, tap: nil)
updateImOnlineLabel()
Insomnia.insomniaInstance?.mode = .always
} else {
SVProgressHUD.show()
SWFApiManager.shared().getDriverDeclarations { [weak self] (success, array, error) in
SVProgressHUD.dismiss()
if success {
if let declarations = array as? [Declaration], declarations.count > 0 {
self?.declarations = declarations
self?.performSegue(withIdentifier: "declarationsSegue", sender: self)
} else {
self?.doGoOnline()
}
} else {
Insomnia.insomniaInstance?.mode = .disabled
self?.updateImOnlineLabel()
self?.showErrorMessage(error: error)
}
}
}
} else {
// try to go offline
SVProgressHUD.show()
SWFApiManager.shared().goOffline { [weak self] (success, error) in
SVProgressHUD.dismiss()
guard let self = self else { return }
if success {
Insomnia.insomniaInstance?.mode = .disabled
SWFSessionManager.shared().setIsOnline(false)
} else {
self.showErrorMessage(error: error)
Insomnia.insomniaInstance?.mode = .always
self.updateImOnlineLabel()
}
self.updateUI()
}
}
}