//
//  ImageView.swift
//  Runner
//
//  Created by LittleSheep on 2025/4/21.
//

import UIKit
import Kingfisher

class ImageView: UIImageView {
    private var _size: CGSize = CGSize(width: 0, height: 0)
    
    // Initialize the image view
    override init(frame: CGRect) {
        super.init(frame: frame)
        contentMode = .scaleAspectFill
        clipsToBounds = true
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        contentMode = .scaleAspectFill
        clipsToBounds = true
    }
    
    // Method to set the image from a URL using Kingfisher
    func setImage(from url: URL, blurHash: String?) {
        let placeholderImage = blurHash != nil ? UIImage.init(blurHash: blurHash!, size: _size) : nil
        let processor = DownsamplingImageProcessor(size: _size) |> RoundCornerImageProcessor(cornerRadius: 20)
        
        self.kf.indicatorType = .activity
        self.kf.setImage(
            with: url,
            placeholder: placeholderImage,
            options: [
                .processor(processor),
                .transition(.fade(0.3))
            ]
        )
    }
}