import UIKit
import Shared
import Models
import XXModels

final class ContactAlmostView: UIView {
    // MARK: UI

    let stack = UIStackView()
    let feedback = BottomFeedbackComponent()

    // MARK: Lifecycle

    init() {
        super.init(frame: .zero)
        setup()
    }

    required init?(coder: NSCoder) { nil }

    // MARK: Public

    func set(status: Contact.AuthStatus) {
        switch status {
        case .requestFailed, .confirmationFailed:
            feedback.set(
                icon: Asset.contactRequestExclamation.image,
                title: Localized.Contact.Inprogress.failed,
                style: .danger,
                actionTitle: Localized.Contact.Inprogress.resend
            )

        case .confirming, .requested, .requesting:
            feedback.set(
                icon: Asset.contactRequestExclamation.image,
                title: Localized.Contact.Inprogress.pending,
                style: .chill
            )
        default:
            break
        }
    }

    // MARK: Properties

    private func setup() {
        stack.axis = .vertical
        stack.spacing = 25

        addSubview(stack)
        addSubview(feedback)

        setupConstraints()
    }

    private func setupConstraints() {
        stack.snp.makeConstraints { make in
            make.top.equalToSuperview().offset(24)
            make.left.equalToSuperview().offset(24)
            make.right.equalToSuperview().offset(-24)
        }

        feedback.snp.makeConstraints { make in
            make.top.greaterThanOrEqualTo(stack.snp.bottom).offset(24)
            make.left.equalToSuperview()
            make.right.equalToSuperview()
            make.bottom.equalToSuperview()
        }
    }
}