MerchantTableViewCell.swift 2.93 KB
//
//  MerchantTableViewCell.swift
//  SwiftWarplyFramework
//
//  Created by Manos Chorianopoulos on 18/10/24.
//

import UIKit

// Define a protocol (if using delegation)
protocol MerchantTableViewCellDelegate: AnyObject {
    func didTapButton(in cell: MerchantTableViewCell)
}

class MerchantTableViewCell: UITableViewCell {
    @IBOutlet weak var mainView: UIView!
    @IBOutlet weak var merchantImage: UIImageView!
    @IBOutlet weak var buttonView: UIView!
    @IBOutlet weak var buttonTitleLable: UILabel!
    @IBOutlet weak var buttonIconImage: UIImageView!
    @IBOutlet weak var actionButton: UIButton!
    
    // Delegate variable
    weak var delegate: MerchantTableViewCellDelegate?
    
    var postImageURL: String? {
        didSet {
            if let url = postImageURL {
                self.merchantImage.image = UIImage() // UIImage(named: "loading")

                UIImage.loadImageUsingCacheWithUrlString(url) { image in
                    // set the image only when we are still displaying the content for the image we finished downloading
                    if url == self.postImageURL {
                        self.merchantImage.image = image
                    }
                }
            }
            else {
                self.merchantImage.image = nil
            }
        }
    }
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        
        mainView.backgroundColor = UIColor(rgb: 0xF2F2F3)
        mainView.layer.cornerRadius = 20.0
        
        buttonTitleLable.font = UIFont(name: "PeridotPE-SBold", size: 13)
        buttonTitleLable.textColor = UIColor(rgb: 0xFFFFFF)
        
        buttonView.backgroundColor = UIColor(rgb: 0x0EA600)
        buttonView.layer.cornerRadius = 12.0
        
        // Add action for button tap
        actionButton.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

    public override func layoutSubviews() {
        super.layoutSubviews()
        //set the values for top,left,bottom,right margins
        let margins = UIEdgeInsets(top: 0, left: 0, bottom: 32, right: 0)
        contentView.frame = contentView.frame.inset(by: margins)
    }
    
    func configureCell(merchant: swiftApi.MerchantModel, buttonTitle: String, iconImage: String?) {
        
        self.postImageURL = merchant._img_preview
        
        buttonTitleLable.text = buttonTitle
        
        if let iconImage {
            self.buttonIconImage.image = UIImage(named: iconImage)
            self.buttonIconImage.isHidden = false
        } else {
            self.buttonIconImage.isHidden = true
        }
    }
    
    @objc private func buttonTapped() {
        // Notify the delegate when button is tapped
        delegate?.didTapButton(in: self)
    }
}