import UIKit
import PassKit

@objc(UnitAddToWalletButtonNativeViewManager)
class UnitAddToWalletButtonNativeViewManager: RCTViewManager {

  override func view() -> UIView {
    return UnitAddToWalletButtonView()
  }

  @objc override static func requiresMainQueueSetup() -> Bool {
    return false
  }
}

class UnitAddToWalletButtonView : UIView {
    @objc var onAddToWalletClicked: RCTDirectEventBlock?

    override init(frame: CGRect) {
      super.init(frame: frame)
      self.addSubview(addPassButton)
      center(addPassButton: addPassButton)
    }

    required init?(coder: NSCoder) {
      super.init(coder: coder)
    }

    lazy var addPassButton: PKAddPassButton = {
      let button = PKAddPassButton(addPassButtonStyle: PKAddPassButtonStyle.black)
        button.addTarget(
        self,
        action: #selector(sendUpdate),
        for: .touchUpInside)

      return button
    }()

    func center(addPassButton: PKAddPassButton) {
        addPassButton.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            addPassButton.leadingAnchor.constraint(equalTo: self.leadingAnchor),
            addPassButton.trailingAnchor.constraint(equalTo: self.trailingAnchor),
            addPassButton.topAnchor.constraint(equalTo: self.topAnchor),
            addPassButton.bottomAnchor.constraint(equalTo: self.bottomAnchor)
        ])
    }



    @objc func sendUpdate(_ sender: UITapGestureRecognizer? = nil) {
        self.onAddToWalletClicked?(nil)
    }
}
