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

import React
import Airbridge

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