SharingHistoryViewController.swift 2.93 KB
//
//  SharingHistoryViewController.swift
//  SwiftWarplyFramework
//
//  Created by Manos Chorianopoulos on 18/7/22.
//

import UIKit

class SharingHistoryViewController: AnalysisChildViewController {

    var loading: Bool = false
    var items: Array<swiftApi.SharingCouponModel> = Array()
    
    // TODO: remove this when configuring model
    let hasMessage = false
    
    // lifecycle
    override func viewDidLoad() {
        
        super.viewDidLoad()
        
        self.refreshControl = UIRefreshControl()
        self.refreshControl?.addTarget(self, action: #selector(handleRefresh(_:)), for: .valueChanged)
        
        handleRefresh(self.refreshControl!)
    }
    
    // mvp
    @objc func load() {
    
        if (loading) {
            return;
        }
        
        showLoading()
        
        swiftApi().getSharingHistoryAsync(responseCallback)
    }
    
    private func showLoading() {
        
        loading = true
        if (self.refreshControl!.isRefreshing) {
            return;
        }
        
        self.refreshControl!.beginRefreshing()
    }
    
    private func showError() {
    }
    
    private func showContent() {
        
        loading = false
        self.refreshControl!.endRefreshing()
    }
    
    // private
    func responseCallback (_ data: Array<swiftApi.SharingCouponModel>?) -> Void {
        
        self.items = data!
        showContent()
        DispatchQueue.main.async {
           self.tableView.reloadData()
       }
    }
    
    @objc func handleRefresh(_ refreshControl: UIRefreshControl) {
        
        self.perform(_: #selector(load), with: nil, afterDelay: 0.5)
    }

    // MARK: - Table view data source
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 2
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if (section == 0) {
            return 1;
        }
        
        return items.count
    }
    
    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if (indexPath.section == 0) {
            return hasMessage ? 380.0 : 280
        }
        
        return 140.0
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        // header
        if (indexPath.section == 0) {
            if (hasMessage) {
                return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderMessageViewCell", for: indexPath) as! AnalysisHeaderMessageViewCell
            }
            
            return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderViewCell", for: indexPath) as! AnalysisHeaderViewCell
        }
        
        let cell = tableView.dequeueReusableCell(withIdentifier: "AnalysisItemViewCell", for: indexPath) as! AnalysisItemViewCell
        cell.configureCell(item: items[indexPath.row])
        
        return cell
    }
}