//
//  LoadingIndicatorImageView.swift
//  WOKA
//
//  Created by MacBook Pro on 08/05/24.
//

import UIKit
import SDWebImage

extension UIImageView {
    
    func imageURL(_ url: String, color : UIColor = UIColor.black) {
        
        let activityIndicator = UIActivityIndicatorView(style: .medium)
        activityIndicator.tintColor = UIColor.darkGray
        activityIndicator.color = color
        activityIndicator.frame = CGRect(x: 0, y: 0, width: 64, height: 64)
        activityIndicator.hidesWhenStopped = true
        DispatchQueue.main.async {
            activityIndicator.startAnimating()
        }
        activityIndicator.translatesAutoresizingMaskIntoConstraints = true
        
        //        activityIndicator.center = CGPoint(x: self.frame.size.width  / 2, y: self.frame.size.height / 2)
        activityIndicator.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds))
        
        // bottom is for resizing the indicator to be perfect in center
        activityIndicator.autoresizingMask = (UIView.AutoresizingMask(rawValue: UIView.AutoresizingMask.RawValue(UInt8(UIView.AutoresizingMask.flexibleRightMargin.rawValue) | UInt8(UIView.AutoresizingMask.flexibleLeftMargin.rawValue) | UInt8(UIView.AutoresizingMask.flexibleBottomMargin.rawValue) | UInt8(UIView.AutoresizingMask.flexibleTopMargin.rawValue))))
        
        self.addSubview(activityIndicator)
        
        self.sd_setImage(with: URL(string: url.replacingOccurrences(of: " ", with: "%20"))) { (image, error, cacheType, url) in
//            activityIndicator.stopAnimating()
            DispatchQueue.main.async {
                activityIndicator.stopAnimating()
//                activityIndicator.removeFromSuperview()
            }
        }
    }
}

extension UIButton {
    
    func setImage(from url: String, for state: UIControl.State, color: UIColor = .black) {
        
        // Ensure the button's background is clear
        self.backgroundColor = .clear
        
        // Ensure the button's image view background is clear
        self.imageView?.backgroundColor = .clear
        
        let activityIndicator = UIActivityIndicatorView(style: .medium)
        activityIndicator.tintColor = .darkGray
        activityIndicator.color = color
        activityIndicator.frame = CGRect(x: 0, y: 0, width: 64, height: 64)
        activityIndicator.hidesWhenStopped = true
        DispatchQueue.main.async {
            activityIndicator.startAnimating()
        }
        activityIndicator.translatesAutoresizingMaskIntoConstraints = true
        
        activityIndicator.center = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2)
        
        // Resizing the indicator to be perfectly centered
        activityIndicator.autoresizingMask = [
            .flexibleRightMargin,
            .flexibleLeftMargin,
            .flexibleBottomMargin,
            .flexibleTopMargin
        ]
        
        self.addSubview(activityIndicator)
        
        // Setting the image using SDWebImage
        self.sd_setImage(with: URL(string: url.replacingOccurrences(of: " ", with: "%20")), for: state) { (image, error, cacheType, url) in
            DispatchQueue.main.async {
                activityIndicator.stopAnimating()
                activityIndicator.removeFromSuperview()
            }
        }
    }
}
