import UIKit
import Combine

final class SheetController: UIViewController {
    enum Action {
        case clear
        case details
    }

    lazy private var screenView = SheetView()

    var actionPublisher: AnyPublisher<Action, Never> {
        actionRelay.eraseToAnyPublisher()
    }

    private var cancellables = Set<AnyCancellable>()
    private let actionRelay = PassthroughSubject<Action, Never>()

    public override func loadView() {
        view = screenView
    }

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

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

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