package co.ab180.airbridge.reactnative.module import co.ab180.airbridge.Airbridge import com.facebook.react.bridge.Callback import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContext import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod import com.facebook.react.bridge.WritableNativeMap import com.facebook.react.modules.core.DeviceEventManagerModule internal class FetchInteractor( reactContext: ReactApplicationContext? ) : ReactContextBaseJavaModule(reactContext) { override fun getName(): String = "FetchInteractor" @ReactMethod fun fetchDeviceUUID(promiseID: String, onSuccess: Callback, onFailure: Callback) { val isHandled = Airbridge.fetchDeviceUUID( onSuccess = { onSuccess(it) }, onFailure = { onFailure(it.message ?: "Unexplained failure") } ) reactApplicationContext ?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java) ?.emit("airbridge.fetch", WritableNativeMap().apply { putString("id", promiseID) putString("type", "onResolve") putBoolean("value", isHandled) }) } @ReactMethod fun fetchAirbridgeGeneratedUUID(promiseID: String, onSuccess: Callback, onFailure: Callback) { val isHandled = Airbridge.fetchAirbridgeGeneratedUUID( onSuccess = { onSuccess(it) }, onFailure = { onFailure(it.message ?: "Unexplained failure") } ) reactApplicationContext ?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java) ?.emit("airbridge.fetch", WritableNativeMap().apply { putString("id", promiseID) putString("type", "onResolve") putBoolean("value", isHandled) }) } @ReactMethod fun addListener(eventName: String) {} @ReactMethod fun removeListeners(count: Int) {} }