react-native-gizwits-sdk-v5 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -6,15 +6,20 @@ import com.facebook.react.bridge.WritableArray
6
6
  import com.facebook.react.bridge.WritableMap
7
7
  import com.gizwits.smart.sdk.exception.GizException
8
8
  import com.google.gson.Gson
9
+ import com.google.gson.annotations.SerializedName
9
10
  import com.google.gson.reflect.TypeToken
10
11
  import org.json.JSONArray
11
12
  import org.json.JSONException
12
13
  import org.json.JSONObject
13
14
 
14
15
  class GizResult<T> {
16
+ @SerializedName("success")
15
17
  var success = false;
18
+ @SerializedName("data")
16
19
  var data: T? = null
20
+ @SerializedName("error")
17
21
  var error: Number? = null
22
+ @SerializedName("message")
18
23
  var message: String = ""
19
24
  }
20
25
 
@@ -0,0 +1,38 @@
1
+ package com.gizwits.reactnativegizwitssdkv5
2
+
3
+ import com.facebook.react.bridge.Callback
4
+ import com.facebook.react.bridge.ReactApplicationContext
5
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
6
+ import com.facebook.react.bridge.ReactMethod
7
+ import com.facebook.react.bridge.ReadableMap
8
+
9
+ class RNGizDeviceManagerModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
10
+ enum class EventName(val value: String) {
11
+ GizOTAProgressEvent("GizOTAProgressEvent"),
12
+ }
13
+
14
+ override fun getName() = "RNGizDeviceManagerModule"
15
+ @ReactMethod
16
+ fun sendDp(options: ReadableMap, result: Callback) {}
17
+ @ReactMethod
18
+ fun getDp(options: ReadableMap, result: Callback) {}
19
+ @ReactMethod
20
+ fun getDeviceInfo(options: ReadableMap, result: Callback) {}
21
+
22
+ @ReactMethod
23
+ fun bind(options: ReadableMap, result: Callback) {}
24
+
25
+ @ReactMethod
26
+ fun unBind(options: ReadableMap, result: Callback) {}
27
+ @ReactMethod
28
+ fun checkUpdate(options: ReadableMap, result: Callback) {}
29
+ @ReactMethod
30
+ fun startUpgrade(options: ReadableMap, result: Callback) {}
31
+ @ReactMethod
32
+ fun register(options: ReadableMap, result: Callback) {}
33
+
34
+ @ReactMethod
35
+ fun connect(options: ReadableMap, result: Callback) {}
36
+ @ReactMethod
37
+ fun disConnect(options: ReadableMap, result: Callback) {}
38
+ }
@@ -1,5 +1,6 @@
1
1
  package com.gizwits.reactnativegizwitssdkv5
2
2
 
3
+ import com.facebook.react.bridge.Arguments
3
4
  import com.facebook.react.bridge.Callback
4
5
  import com.facebook.react.bridge.ReactApplicationContext
5
6
  import com.facebook.react.bridge.ReactContextBaseJavaModule
@@ -10,22 +11,34 @@ import com.facebook.react.bridge.WritableMap
10
11
  import com.facebook.react.modules.core.DeviceEventManagerModule
11
12
  import com.gizwits.smart.sdk.GizDevice
12
13
  import com.gizwits.smart.sdk.GizSDKManager
14
+ import com.gizwits.smart.sdk.GizUserManager
15
+ import com.gizwits.smart.sdk.bluetooth.bleCapacity
13
16
  import com.gizwits.smart.sdk.bluetooth.startScan
14
17
  import com.gizwits.smart.sdk.bluetooth.stopScan
15
18
  import com.gizwits.smart.sdk.bluetooth.subscribeBluetoothDeviceList
16
19
  import com.gizwits.smart.sdk.common.GizConfiguration
17
20
  import com.gizwits.smart.sdk.common.combineLatest
18
21
  import com.gizwits.smart.sdk.exception.GizException
22
+ import com.gizwits.smart.sdk.lan.lanCapacity
19
23
  import com.gizwits.smart.sdk.lan.subscribeLanDeviceList
24
+ import com.gizwits.smart.sdk.mqtt.mqttCapacity
25
+ import com.gizwits.smart.sdk.mqtt.queryBoundDevices
20
26
  import com.gizwits.smart.sdk.mqtt.subscribeBoundDeviceList
21
27
  import kotlinx.coroutines.CoroutineScope
22
28
  import kotlinx.coroutines.Dispatchers
23
29
  import kotlinx.coroutines.flow.Flow
30
+ import kotlinx.coroutines.flow.collect
31
+ import kotlinx.coroutines.flow.collectLatest
32
+ import kotlinx.coroutines.flow.last
33
+ import kotlinx.coroutines.flow.take
34
+ import kotlinx.coroutines.flow.toList
24
35
  import kotlinx.coroutines.launch
25
36
  import org.json.JSONArray
37
+ import org.json.JSONObject
26
38
 
27
39
  class RNGizSDKManagerModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
28
40
 
41
+ internal var devices = listOf<GizDevice>()
29
42
  enum class EventName(val value: String) {
30
43
  DeviceDataListener("DeviceDataListener"),
31
44
  DeviceListListener("DeviceListListener"),
@@ -48,11 +61,45 @@ class RNGizSDKManagerModule(reactContext: ReactApplicationContext) : ReactContex
48
61
  super.initialize()
49
62
  CoroutineScope(Dispatchers.Main).launch {
50
63
  deviceListState.collect { deviceList ->
64
+ // 保存一份缓存
65
+ val newDevices = deviceList - devices
66
+ newDevices.forEach{dev ->
67
+ val devJob = dev.getDeviceJob()
68
+ val scope = CoroutineScope(devJob)
69
+ scope.launch {
70
+ dev.bleCapacity.subscribeStatus().collect{
71
+ val data = JSONObject()
72
+ data.put("state", it.toInt())
73
+ data.put("type", "BLE")
74
+ data.put("device", dev.toJsonObject())
75
+ sendEvent(EventName.DeviceStateListener.name, GizRNCallbackManager.jsonObject2WriteableMap(data))
76
+ }
77
+ }
78
+ scope.launch {
79
+ dev.lanCapacity.subscribeStatus().collect{
80
+ val data = JSONObject()
81
+ data.put("state", it.toInt())
82
+ data.put("type", "LAN")
83
+ data.put("device", dev.toJsonObject())
84
+ sendEvent(EventName.DeviceStateListener.name, GizRNCallbackManager.jsonObject2WriteableMap(data))
85
+ }
86
+ }
87
+ scope.launch {
88
+ dev.mqttCapacity.subscribeStatus().collect{
89
+ val data = JSONObject()
90
+ data.put("state", it.toInt())
91
+ data.put("type", "MQTT")
92
+ data.put("device", dev.toJsonObject())
93
+ sendEvent(EventName.DeviceStateListener.name, GizRNCallbackManager.jsonObject2WriteableMap(data))
94
+ }
95
+ }
96
+ }
97
+ devices = deviceList
51
98
  val deviceListJson = JSONArray()
52
99
  deviceList.forEach{ item ->
53
100
  deviceListJson.put(item.toJsonObject())
54
101
  }
55
- sendEvent(EventName.DeviceStateListener.name, GizRNCallbackManager.jsonArray2WriteableArray(deviceListJson))
102
+ sendEvent(EventName.DeviceListListener.name, GizRNCallbackManager.jsonArray2WriteableArray(deviceListJson))
56
103
  }
57
104
  }
58
105
  }
@@ -82,7 +129,23 @@ class RNGizSDKManagerModule(reactContext: ReactApplicationContext) : ReactContex
82
129
  }
83
130
  @ReactMethod
84
131
  fun getDevices(options: ReadableMap, result: Callback) {
85
- // 查询 绑定设备 返回设备列表
132
+ CoroutineScope(Dispatchers.Main).launch {
133
+ // 查询 绑定设备 返回设备列表
134
+ GizSDKManager.queryBoundDevices()
135
+ deviceListState.take(1).collect {
136
+ val jsonData = JSONArray()
137
+ it.forEach{device ->
138
+ jsonData.put(device.toJsonObject())
139
+ }
140
+ // 设备列表比较特殊,手动回调
141
+ val writableMap = Arguments.createMap()
142
+ writableMap.putArray("data", GizRNCallbackManager.jsonArray2WriteableArray(jsonData))
143
+ writableMap.putBoolean("success", true)
144
+ writableMap.putInt("error", 0)
145
+ writableMap.putString("message", "")
146
+ result.invoke(null, writableMap)
147
+ }
148
+ }
86
149
  }
87
150
 
88
151
  @ReactMethod
@@ -17,7 +17,8 @@ class RNGizSDKManagerPackage : ReactPackage {
17
17
  MutableList<NativeModule> {
18
18
  return mutableListOf(
19
19
  RNGizSDKManagerModule(reactContext),
20
- RNGizUserManagerModule(reactContext)
20
+ RNGizUserManagerModule(reactContext),
21
+ RNGizDeviceManagerModule(reactContext)
21
22
  )
22
23
  }
23
24
  }
@@ -5,17 +5,38 @@ import com.facebook.react.bridge.ReactApplicationContext
5
5
  import com.facebook.react.bridge.ReactContextBaseJavaModule
6
6
  import com.facebook.react.bridge.ReactMethod
7
7
  import com.facebook.react.bridge.ReadableMap
8
- import com.gizwits.smart.sdk.GizSDKManager
9
- import com.gizwits.smart.sdk.GizUserManager
10
- import com.gizwits.smart.sdk.exception.GizException
8
+ import com.gizwits.smart.sdk.GizUserManagerImpl
9
+ import com.gizwits.smart.sdk.common.GizConfiguration
10
+ import com.gizwits.smart.sdk.core.data.model.UserToken
11
+ import com.google.gson.annotations.SerializedName
12
+ import java.util.Date
13
+
14
+ data class UpdateAuthorizeDataParams(
15
+ @SerializedName("token")
16
+ val token: String,
17
+ @SerializedName("uid")
18
+ val uid: String
19
+ )
11
20
 
12
21
  class RNGizUserManagerModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
13
22
  override fun getName() = "RNGizUserManagerModule"
14
- private val userManager: GizUserManager = GizSDKManager.getUserManager()
15
23
 
16
24
  @ReactMethod
17
25
  fun getAuthorizeData(options: ReadableMap, result: Callback) {
18
- GizRNCallbackManager.callbackWithResult(callback = result, result = Result.failure<Number>(
19
- GizException.GIZ_SDK_PARAM_INVALID))
26
+ val tokenInfo = GizUserManagerImpl.getUserTokenStream().value
27
+ val authData = UpdateAuthorizeDataParams(tokenInfo?.token ?: "", tokenInfo?.userId ?: "")
28
+ GizRNCallbackManager.callbackWithResult(callback = result, result = Result.success(authData))
29
+ }
30
+ @ReactMethod
31
+ fun updateAuthorizeData(options: ReadableMap, result: Callback) {
32
+ var config = RNGizParamsChecker.check(options, result, UpdateAuthorizeDataParams::class.java)
33
+ config?.let {
34
+ // Date 暂时没有用到
35
+ GizUserManagerImpl.updateAuthorizeData(UserToken(config.token, config.uid, Date()))
36
+ }
37
+ }
38
+ @ReactMethod
39
+ fun loginByAnonymous(options: ReadableMap, result: Callback) {
40
+
20
41
  }
21
42
  }
@@ -68,6 +68,18 @@ class RNGizSDKManagerModule: RCTEventEmitter, GizSdkEventHandlerDelegate {
68
68
  }
69
69
  }
70
70
 
71
+ @objc
72
+ public func startBleScan(_ options: NSDictionary, result: @escaping RCTResponseSenderBlock) {
73
+ GizSDKManager.sharedInstance.startBleScan()
74
+ GizRNCallbackManager.callbackWithResult(callback: result, result: GizResult<Int?, GizAPIException?>(data: nil, success: true))
75
+ }
76
+
77
+ @objc
78
+ public func stopBleScan(_ options: NSDictionary, result: @escaping RCTResponseSenderBlock) {
79
+ GizSDKManager.sharedInstance.stopBleScan()
80
+ GizRNCallbackManager.callbackWithResult(callback: result, result: GizResult<Int?, GizAPIException?>(data: nil, success: true))
81
+ }
82
+
71
83
  @objc
72
84
  override static func requiresMainQueueSetup() -> Bool {
73
85
  return true
package/lib/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export declare type AuthenticationMethod = 0 | 1;
2
2
  export interface GizBaseCapability {
3
3
  name: string;
4
- isActived: boolean;
4
+ isActive: boolean;
5
5
  netStatus: NetStatus;
6
6
  connect: () => Promise<GizResult<any, any>>;
7
7
  getDeviceInfo: () => Promise<GizResult<GizDeviceInfoProfile, any>>;
@@ -101,7 +101,7 @@ export interface GizConfigStruct {
101
101
  productInfos: ProductInfoStruct[];
102
102
  serverInfo?: ServerInfoStruct;
103
103
  }
104
- export declare type GizWifiDeviceNetStatus = 0 | 1 | 2 | 3;
104
+ export declare type GizDeviceNetStatus = 0 | 1 | 2;
105
105
  export declare type GizCapability = 'BLE' | 'LAN' | 'MQTT';
106
106
  export declare type GizOTAFirmwareType = 'Module' | 'MCU';
107
107
  export interface DeviceDataRes {
@@ -111,7 +111,7 @@ export interface DeviceDataRes {
111
111
  }
112
112
  export interface DeviceStateRes {
113
113
  device: IDevice;
114
- state: GizWifiDeviceNetStatus;
114
+ state: GizDeviceNetStatus;
115
115
  type: GizCapability;
116
116
  }
117
117
  export declare type DeviceDataCallback = (data: DeviceDataRes) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gizwits-sdk-v5",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "Gizwits",
5
5
  "homepage": "https://github.com/demchenkoalex/react-native-gizwits-sdk-v5#readme",
6
6
  "main": "lib/index.js",