//
//  IMAIMsgLoadingView.swift

//
//  Created by Leon on 2025/8/28.
//
import UIKit
import Lottie

class IMAIMsgLoadingConfig : IMContentBaseConfig {
    override func contentSize(model: SessionBaseModel) -> CGSize {
        return CGSize(width: 20, height: 20)
    }
    
    
    override func cellInsets(model: SessionBaseModel) -> UIEdgeInsets {
        return UIEdgeInsets(top: 16, left: 24, bottom: 16, right: 24)
    }
    
    override func contentInsets(model: SessionBaseModel) -> UIEdgeInsets {
        return UIEdgeInsets(top: 16, left: 24, bottom: 16, right: 24)
    }
    
    override func contentViewClass(model: SessionBaseModel) -> IMContentBaseView.Type {
        return IMAIMsgLoadingView.self
    }
}

class IMAIMsgLoadingView :IMContentBaseView{
    var block: UIView!
    var lottie: LottieAnimationView!
    
    required override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupUI()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func setupUI() {
        block = {
            let v = UIView()
            v.backgroundColor = .c.csedn
            v.cornerRadius = 16
            addSubview(v)
            v.snp.makeConstraints { make in
                make.edges.equalToSuperview()
            }
            return v
        }()
        
        lottie = {
            let animation = LottieAnimation.named("three_dots_msg_loading")
            let animationView = LottieAnimationView(animation: animation)

            animationView.contentMode = .scaleAspectFit
            animationView.loopMode = .loop
            animationView.backgroundBehavior = .pauseAndRestore
            animationView.backgroundColor = .clear
            animationView.size = CGSize(width: 20, height: 20)
            block.addSubview(animationView)
            animationView.snp.makeConstraints { make in
                make.center.equalToSuperview()
                make.size.equalTo(CGSize(width: 20, height: 20))
            }
            return animationView
        }()
        
        lottie.play()
    }
    
    deinit{
        lottie.stop()
        
    }
}
