//
//  LNNoMoreDataView.swift
//  Lanu
//
//  Created by OneeChan on 2025/12/29.
//

import Foundation
import UIKit
import SnapKit


class LNNoMoreDataView: UIView {
    private let stackView = UIStackView()
    let imageView = UIImageView()
    let tipsLabel = UILabel()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupViews()
    }
    
    func showNetworkError() {
        imageView.image = .icNoDataNetworkError
        tipsLabel.text = .init(key: "A00004")
        isHidden = false
    }
    
    func showNoData(icon: UIImage = .icNoDataEmpty,
                    tips: String = .init(key: "A00005")) {
        imageView.image = icon
        tipsLabel.text = tips
        isHidden = false
    }
    
    func addActionView(_ view: UIView) {
        stackView.addArrangedSubview(view)
    }
    
    func hide() {
        isHidden = true
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

extension LNNoMoreDataView {
    private func setupViews() {
        isHidden = true
        
        snp.makeConstraints { make in
            make.width.lessThanOrEqualTo(260)
        }
        
        stackView.axis = .vertical
        stackView.spacing = 24
        stackView.alignment = .center
        addSubview(stackView)
        stackView.snp.makeConstraints { make in
            make.edges.equalToSuperview()
        }
        
        let emptyView = UIView()
        stackView.addArrangedSubview(emptyView)
        
        emptyView.addSubview(imageView)
        imageView.snp.makeConstraints { make in
            make.centerX.equalToSuperview()
            make.top.equalToSuperview()
            make.width.height.equalTo(0).priority(.low)
        }
        
        tipsLabel.font = .body_s
        tipsLabel.textColor = .text_2
        tipsLabel.numberOfLines = 0
        tipsLabel.textAlignment = .center
        emptyView.addSubview(tipsLabel)
        tipsLabel.snp.makeConstraints { make in
            make.horizontalEdges.equalToSuperview()
            make.top.equalTo(imageView.snp.bottom).offset(14)
            make.bottom.equalToSuperview()
        }
    }
}
