//  Copyright © 2020 Australian Government All rights reserved.

import Foundation
import UIKit
import KeychainSwift

class QuestionUploadDataViewController: UIViewController {
    
    @IBOutlet var uploadButton: UIButton!
    @IBOutlet var activityIndicator: UIActivityIndicatorView!
    
    @IBAction func didTapUpload(_ sender: Any) {
        showUploadDataFlow()
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        setIsLoading(false)
    }
    
    // MARK: -
    
    private func showUploadDataFlow() {
        let keychain = KeychainSwift()
        setIsLoading(true)
        guard let jwt = keychain.get("JWT_TOKEN") else {
            DLog("Error trying to upload when not logged in")
            setIsLoading(false)
            return
        }
        InitiateUploadAPI.requestUploadOTP(session: jwt) { (success, error) in
            self.setIsLoading(false)
            guard success == true else {
                if let error = error, error == .ExpireSession {
                    NotificationCenter.default.post(name: .jwtExpired, object: nil)
                    return
                }
                DLog("error getting upload OTP \(String(describing: error))")
                self.displayUploadDataError()
                return
            }
            self.performSegue(withIdentifier: "showUploadDataFlow", sender: nil)
        }
    }
    
    func displayUploadDataError() {
        let errorAlert = UIAlertController(title: "Upload request failed",
                                           message: "Please try again later.",
                                           preferredStyle: .alert)
        errorAlert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        self.present(errorAlert, animated: true)
    }
    
    private func setIsLoading(_ isLoading: Bool) {
        if isLoading {
            uploadButton.alpha = 0.2
            uploadButton.isEnabled = false
            activityIndicator.startAnimating()
        } else {
            uploadButton.alpha = 1
            uploadButton.isEnabled = true
            activityIndicator.stopAnimating()
        }
    }
    
}