//
//  DeeplinkInteractor.swift
//  AirbridgeReactNative
//
//  Created by WOF on 7/8/24.
//

import React
import Airbridge

@objc(DeeplinkInteractor)
class DeeplinkInteractor: RCTEventEmitter {
    static var initialDeeplink: URL? = nil
    static var onDeeplinkReceived: (URL) -> Void = {
        initialDeeplink = $0
    }
    
    @objc(listen)
    func listen() {
        weak var weakSelf = self
        
        if DeeplinkInteractor.initialDeeplink != nil {
            weakSelf?.sendEvent(
                withName: "airbridge.deeplink",
                body: DeeplinkInteractor.initialDeeplink?.absoluteString
            )
            DeeplinkInteractor.initialDeeplink = nil
        }
        
        DeeplinkInteractor.onDeeplinkReceived = { deeplink in
            weakSelf?.sendEvent(
                withName: "airbridge.deeplink",
                body: deeplink.absoluteString
            )
        }
    }
    
    override func supportedEvents() -> [String]! {
        ["airbridge.deeplink"]
    }
    
    override class func requiresMainQueueSetup() -> Bool {
        true
    }
    
    override var methodQueue: dispatch_queue_t! {
        DispatchQueue.main
    }
}
