//
//  SetRegionViewController.swift
//  Lockdown
//
//  Copyright © 2019 Confirmed Inc. All rights reserved.
//

import UIKit
import CocoaLumberjackSwift
import WidgetKit

class SetRegionViewController: BaseViewController, UITableViewDataSource, UITableViewDelegate {
    
    @IBOutlet weak var tableView: UITableView!
    
    var homeVC: HomeViewController?
    
    var vpnVC: LDVpnViewController?
    
    var firewall: LDFirewallViewController?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.reloadData()
    }
    
    @IBAction func dismiss(_ sender: Any) {
        dismiss(animated: true, completion: nil)
    }
    
    //MARK: - TABLE VIEW
    
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return CGFloat.leastNonzeroMagnitude
    }
    
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return CGFloat.leastNonzeroMagnitude
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 55
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return vpnRegions.count
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
        
        let tappedVpnRegion = vpnRegions[indexPath.row]
        setSavedVPNRegion(vpnRegion: tappedVpnRegion)
        if #available(iOSApplicationExtension 14.0, iOS 14.0, *) {
            WidgetCenter.shared.reloadAllTimelines()
        }

        if homeVC != nil {
            homeVC!.updateVPNRegionLabel()
        }
        
        dismiss(animated: true, completion: {
            if VPNController.shared.status() == .connected {
                VPNController.shared.restart()
            }
        })
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let vpnRegion = vpnRegions[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "setRegionCell", for: indexPath) as! SetRegionCell
        cell.regionFlag.text = vpnRegion.regionFlagEmoji
        cell.regionName.text = vpnRegion.regionDisplayName
        
        if vpnRegion.serverPrefix == getSavedVPNRegion().serverPrefix {
            cell.regionSelected.isHidden = false
        }
        else {
            cell.regionSelected.isHidden = true
        }
        
        return cell
    }
}
