package com.tuya.smart.rnsdk.device import com.facebook.react.bridge.* import com.thingclips.smart.home.sdk.ThingHomeSdk import com.thingclips.smart.home.sdk.bean.TransferDataBean import com.thingclips.smart.sdk.api.IThingDataCallback import com.tuya.smart.rnsdk.utils.BridgeUtils import com.tuya.smart.rnsdk.utils.Constant import com.tuya.smart.rnsdk.utils.Constant.DEVID import com.tuya.smart.rnsdk.utils.ReactParamsCheck import com.tuya.smart.rnsdk.utils.TuyaReactUtils class TuyaSingleTransferModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { override fun getName(): String { return "TuyaSingleTransferModule" } /** * 开始连接 */ @ReactMethod fun startConnect() { ThingHomeSdk.getTransferInstance().startConnect() } /** * 是否在线 */ @ReactMethod fun isOnline(promise: Promise) { promise.resolve(ThingHomeSdk.getTransferInstance().isOnline) } /** * 订阅设备数据,订阅设备之后,设备如果有数据上报上来,便可以通过 registerTransferDataListener 回调上来。需要注意的是,每次通道连接成功都需要重新订阅设备数据 */ @ReactMethod fun subscribeDevice(params: ReadableMap) { if (ReactParamsCheck.checkParams(arrayOf(Constant.DEVID), params)) { ThingHomeSdk.getTransferInstance().subscribeDevice(params.getString(DEVID)) } } /** * 取消订阅设备信息,则设备数据不在收到 * */ @ReactMethod fun unSubscribeDevice(params: ReadableMap) { if (ReactParamsCheck.checkParams(arrayOf(Constant.DEVID), params)) { ThingHomeSdk.getTransferInstance().unSubscribeDevice(params.getString(DEVID)) } } @ReactMethod fun registerTransferDataListener(params: ReadableMap) { if (ReactParamsCheck.checkParams(arrayOf(Constant.DEVID), params)) { ThingHomeSdk.getTransferInstance().registerTransferDataListener(object : IThingDataCallback { override fun onSuccess(var1: TransferDataBean){ val map = Arguments.createMap() map.putString("devId", params.getString(DEVID)) map.putMap("data", TuyaReactUtils.parseToWritableMap(var1)) map.putString("type", "onSuccess"); BridgeUtils.singleTransferListener(reactApplicationContext, map, params.getString(DEVID) as String) } override fun onError(var1: String, var2: String){ val map = Arguments.createMap() map.putString("devId", params.getString(DEVID)) map.putString("var1", var1) map.putString("var2", var2) map.putString("type", "onError"); BridgeUtils.singleTransferListener(reactApplicationContext, map, params.getString(DEVID) as String) } }) } } @ReactMethod fun unRegisterTransferDataListener(params: ReadableMap) { } @ReactMethod fun stopConnect() { ThingHomeSdk.getTransferInstance().stopConnect() } }