Skip to main content

imOnlineSwitch

 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()
            }
        }
    }