import UIKit
import Combine

public final class ChatListSheetController: UIViewController {
    public enum Action {
        case delete
        case deleteAll
    }

    lazy private var screenView = ChatListMenuView()

    var didChooseAction: (Action) -> Void
    private var cancellables = Set<AnyCancellable>()

    public init(_ didChooseAction: @escaping ChatListSheetClosure) {
        self.didChooseAction = didChooseAction
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder: NSCoder) { nil }

    public override func loadView() {
        view = screenView
    }

    public override func viewDidLoad() {
        super.viewDidLoad()
        setupBindings()
    }

    private func setupBindings() {
        screenView.deleteButton
            .publisher(for: .touchUpInside)
            .sink { [unowned self] in dismiss(animated: true) { [weak self] in self?.didChooseAction(.delete) }}
            .store(in: &cancellables)

        screenView.deleteAllButton
            .publisher(for: .touchUpInside)
            .sink { [unowned self] in dismiss(animated: true) { [weak self] in self?.didChooseAction(.deleteAll) }}
            .store(in: &cancellables)
    }
}