react-native-gizwits-sdk-v5 1.0.5 → 1.0.7

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.
@@ -1,13 +1,13 @@
1
1
 
2
2
 
3
3
  import Foundation
4
- import GizSDKV5
4
+ import GizwitsiOSSDK
5
5
 
6
6
 
7
7
  public class GizRNCallbackManager {
8
8
 
9
- public static func callbackWithResult(callback: RCTResponseSenderBlock, result: GizResult<Any, Any>) {
10
- var resultData = convertToDictionary(object: result)
9
+ public static func callbackWithResult<T, U>(callback: RCTResponseSenderBlock, result: GizResult<T, U>) {
10
+ let resultData = convertToDictionary(object: result)
11
11
  if (result.success) {
12
12
  callback([NSNull(), resultData])
13
13
  } else {
@@ -15,7 +15,7 @@ public class GizRNCallbackManager {
15
15
  }
16
16
  }
17
17
 
18
- public static func convertToDictionary<T: Codable>(object: T) -> [String: Any]? {
18
+ public static func convertToDictionary<T: Encodable>(object: T) -> [String: Any]? {
19
19
  let encoder = JSONEncoder()
20
20
  guard let data = try? encoder.encode(object) else {
21
21
  return nil
@@ -11,4 +11,6 @@
11
11
 
12
12
  RCT_EXTERN_METHOD(initSDK:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
13
13
 
14
+ RCT_EXTERN_METHOD(getDevices:(NSDictionary *)options result:(RCTResponseSenderBlock)result)
15
+
14
16
  @end
@@ -6,25 +6,70 @@
6
6
  //
7
7
 
8
8
  import Foundation
9
- import GizSDKV5
9
+ import React
10
+ import GizwitsiOSSDK
10
11
 
11
12
  @objc(RNGizSDKManagerModule)
12
- class RNGizSDKManagerModule: NSObject {
13
+ class RNGizSDKManagerModule: RCTEventEmitter, GizSdkEventHandlerDelegate {
14
+
15
+ override func supportedEvents() -> [String]! {
16
+ return ["DeviceDataListener", "DeviceListListener", "DeviceStateListener"]
17
+ }
18
+
19
+ func onDeviceListUpdate(devices: Array<GizwitsiOSSDK.GizDevice>) {
20
+ sendEvent(withName: "DeviceListListener", body: GizRNCallbackManager.convertToDictionary(object: devices))
21
+ }
22
+
23
+ func onDeviceData(device: GizwitsiOSSDK.GizBaseProfile, result: GizwitsiOSSDK.GizJSON, type: GizwitsiOSSDK.GizCapability) {
24
+ let data = [
25
+ "device": GizRNCallbackManager.convertToDictionary(object: device),
26
+ "data": result,
27
+ "type": type.rawValue
28
+ ]
29
+ sendEvent(withName: "DeviceDataListener", body: data)
30
+ }
31
+
32
+ func onDeviceState(device: GizwitsiOSSDK.GizBaseProfile, state: GizwitsiOSSDK.GizWifiDeviceNetStatus, type: GizwitsiOSSDK.GizCapability) {
33
+ let data = [
34
+ "device": GizRNCallbackManager.convertToDictionary(object: device),
35
+ "state": state.rawValue,
36
+ "type": type.rawValue
37
+ ]
38
+ sendEvent(withName: "DeviceStateListener", body: data)
39
+ }
40
+ override init() {
41
+ super.init()
42
+ GizSDKManager.sharedInstance.setDelegate(delegate: self)
43
+ }
13
44
 
14
45
  @objc
15
46
  public func initSDK(_ options: NSDictionary, result: RCTResponseSenderBlock) {
16
- if let jsonData = try? JSONSerialization.data(withJSONObject: options, options: []),
17
- let config = try? JSONDecoder().decode(GizConfigStruct.self, from: jsonData) {
18
- GizSDKManager.sharedInstance.initSDK(config: config)
19
- GizRNCallbackManager.callbackWithResult(callback: result, result: GizResult(data: nil, success: true))
47
+ if let jsonData = try? JSONSerialization.data(withJSONObject: options, options: []) {
48
+
49
+ if let config = try? JSONDecoder().decode(GizConfigStruct.self, from: jsonData) {
50
+ GizSDKManager.sharedInstance.initSDK(config: config)
51
+ GizRNCallbackManager.callbackWithResult(callback: result, result: GizResult<Int?, GizAPIException?>(data: nil, success: true))
52
+ } else {
53
+ // 参数错误
54
+ GizRNCallbackManager.callbackWithResult(callback: result, result: GizResult<Int?, GizAPIException?>(error: GizAPIException.GIZ_SDK_PARAM_INVALID))
55
+ }
20
56
  } else {
21
- // 回调错误
22
- GizRNCallbackManager.callbackWithResult(callback: result, result: GizResult(error: APIException.GIZ_SDK_PARAM_INVALID))
57
+ // 解析json失败
58
+ GizRNCallbackManager.callbackWithResult(callback: result, result: GizResult<Int?, GizAPIException?>(error: GizAPIException.GIZ_SDK_PARAM_INVALID))
59
+ }
60
+ }
61
+
62
+ @objc
63
+ public func getDevices(result: @escaping RCTResponseSenderBlock) {
64
+ Task {
65
+ let data = await GizSDKManager.sharedInstance.getDevices()
66
+ GizRNCallbackManager.callbackWithResult(callback: result, result: GizResult<Array<GizDevice>?, GizAPIException?>(data: data, success: true))
67
+
23
68
  }
24
69
  }
25
70
 
26
71
  @objc
27
- static func requiresMainQueueSetup() -> Bool {
72
+ override static func requiresMainQueueSetup() -> Bool {
28
73
  return true
29
74
  }
30
75
  }
package/lib/Base.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { GizCallback, GizResult } from './types';
2
+ declare class Base {
3
+ callbackWapper(func: (callback: GizCallback<any, any>) => void): Promise<GizResult<any, any>>;
4
+ }
5
+ export default Base;
package/lib/Base.js ADDED
@@ -0,0 +1,17 @@
1
+ class Base {
2
+ callbackWapper(func) {
3
+ const promise = new Promise((res, _) => {
4
+ func((error, data) => {
5
+ if (error) {
6
+ res(error);
7
+ }
8
+ else {
9
+ res(data);
10
+ }
11
+ });
12
+ });
13
+ return promise;
14
+ }
15
+ }
16
+ export default Base;
17
+ //# sourceMappingURL=Base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Base.js","sourceRoot":"","sources":["../src/Base.tsx"],"names":[],"mappings":"AAEA,MAAM,IAAI;IACR,cAAc,CACZ,IAA+C;QAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACnB,IAAI,KAAK,EAAE;oBACT,GAAG,CAAC,KAAK,CAAC,CAAA;iBACX;qBAAM;oBACL,GAAG,CAAC,IAAI,CAAC,CAAA;iBACV;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,OAAO,OAAuC,CAAA;IAChD,CAAC;CACF;AAED,eAAe,IAAI,CAAA"}
package/lib/index.d.ts CHANGED
@@ -1,25 +1,27 @@
1
- export interface RNGizSDKManagerModule {
2
- initSDK: (config: GizConfigStruct, callback: GizCallback<any, any>) => void;
3
- }
4
- export interface GizResult<T, E> {
5
- success: boolean;
6
- message: string;
7
- data?: T;
8
- error?: E;
9
- }
10
- export declare type GizCallback<T, E> = (error: GizResult<T, E>, data: GizResult<T, E>) => void;
11
- export interface ServerInfoStruct {
12
- openAPIInfo: string;
13
- }
14
- export interface ProductInfoStruct {
15
- productKey: string;
16
- productSecret: string;
17
- }
18
- export interface GizConfigStruct {
19
- appID: string;
20
- appSecret: string;
21
- productInfos: ProductInfoStruct[];
22
- serverInfo?: ServerInfoStruct;
1
+ import Base from './Base';
2
+ import { DeviceDataCallback, DeviceDataRes, DeviceListCallback, DeviceStateCallback, DeviceStateRes, GizConfigStruct, IDevice, TRNGizSDKManagerModule } from './types';
3
+ import * as Types from './types';
4
+ declare class RNGizSDKManagerModule extends Base implements TRNGizSDKManagerModule {
5
+ deviceDataCallbacks: DeviceDataCallback[];
6
+ deviceListCallbacks: DeviceListCallback[];
7
+ deviceStateCallbacks: DeviceStateCallback[];
8
+ constructor();
9
+ deviceDataCallback: (data: DeviceDataRes) => void;
10
+ deviceListCallback: (data: IDevice[]) => void;
11
+ deviceStateCallback: (data: DeviceStateRes) => void;
12
+ initSDK(config: GizConfigStruct): Promise<Types.GizResult<any, any>>;
13
+ /**
14
+ * 查询设备列表
15
+ */
16
+ getDevices(): Promise<Types.GizResult<any, any>>;
17
+ addDeviceDataListener(callback: DeviceDataCallback): void;
18
+ addDeviceListListener(callback: DeviceListCallback): void;
19
+ addDeviceStateListener(callback: DeviceStateCallback): void;
20
+ removeDeviceDataListener(callback: DeviceDataCallback): void;
21
+ removeDeviceListListener(callback: DeviceListCallback): void;
22
+ removeDeviceStateListener(callback: DeviceStateCallback): void;
23
+ private deleteCallBack;
23
24
  }
24
25
  declare const _default: RNGizSDKManagerModule;
25
26
  export default _default;
27
+ export { Types };
package/lib/index.js CHANGED
@@ -1,3 +1,72 @@
1
- import { NativeModules } from 'react-native';
2
- export default NativeModules.RNGizSDKManagerModule;
1
+ import { NativeEventEmitter, NativeModules } from 'react-native';
2
+ import Base from './Base';
3
+ import * as Types from './types';
4
+ const eventEmitter = new NativeEventEmitter(NativeModules.RNGizSDKManagerModule);
5
+ class RNGizSDKManagerModule extends Base {
6
+ constructor() {
7
+ super();
8
+ this.deviceDataCallbacks = [];
9
+ this.deviceListCallbacks = [];
10
+ this.deviceStateCallbacks = [];
11
+ this.deviceDataCallback = (data) => {
12
+ this.deviceDataCallbacks.map((item) => {
13
+ item(data);
14
+ });
15
+ };
16
+ this.deviceListCallback = (data) => {
17
+ this.deviceListCallbacks.map((item) => {
18
+ item(data);
19
+ });
20
+ };
21
+ this.deviceStateCallback = (data) => {
22
+ this.deviceStateCallbacks.map((item) => {
23
+ item(data);
24
+ });
25
+ };
26
+ this.deleteCallBack = (callbacks, callback) => {
27
+ const index = callbacks.findIndex((item) => item === callback);
28
+ if (index !== -1) {
29
+ callbacks.splice(index, 1);
30
+ }
31
+ };
32
+ eventEmitter.addListener('DeviceDataCallback', this.deviceDataCallback);
33
+ eventEmitter.addListener('DeviceListCallback', this.deviceListCallback);
34
+ eventEmitter.addListener('DeviceStateCallback', this.deviceStateCallback);
35
+ }
36
+ async initSDK(config) {
37
+ return this.callbackWapper((callback) => {
38
+ NativeModules.RNGizSDKManagerModule.initSDK(config, callback);
39
+ });
40
+ }
41
+ /**
42
+ * 查询设备列表
43
+ */
44
+ async getDevices() {
45
+ return this.callbackWapper((callback) => {
46
+ NativeModules.RNGizSDKManagerModule.getDevices({}, callback);
47
+ });
48
+ }
49
+ // 添加监听
50
+ addDeviceDataListener(callback) {
51
+ this.deviceDataCallbacks.push(callback);
52
+ }
53
+ addDeviceListListener(callback) {
54
+ this.deviceListCallbacks.push(callback);
55
+ }
56
+ addDeviceStateListener(callback) {
57
+ this.deviceStateCallbacks.push(callback);
58
+ }
59
+ // 解除
60
+ removeDeviceDataListener(callback) {
61
+ this.deleteCallBack(this.deviceDataCallbacks, callback);
62
+ }
63
+ removeDeviceListListener(callback) {
64
+ this.deleteCallBack(this.deviceListCallbacks, callback);
65
+ }
66
+ removeDeviceStateListener(callback) {
67
+ this.deleteCallBack(this.deviceStateCallbacks, callback);
68
+ }
69
+ }
70
+ export default new RNGizSDKManagerModule();
71
+ export { Types };
3
72
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AA8B5C,eAAe,aAAa,CAAC,qBAA8C,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,91 @@
1
+ export declare type AuthenticationMethod = 0 | 1;
2
+ export interface GizBaseCapability {
3
+ name: string;
4
+ isActive: boolean;
5
+ }
6
+ export interface GizBaseProfile {
7
+ mac: string;
8
+ productKey: string;
9
+ did?: string;
10
+ protocolVersion: number;
11
+ supportOTA: boolean;
12
+ requiresAuthentication: boolean;
13
+ authenticationMethod: AuthenticationMethod;
14
+ rootDid?: string;
15
+ moduleSoftVer?: string;
16
+ configured: boolean;
17
+ mcuSoftVer?: string;
18
+ isBind: boolean;
19
+ name: string;
20
+ }
21
+ export declare type BlueToothType = 'Mesh' | 'Beacon' | 'Voice' | 'GATT';
22
+ export declare type BlueToothVersion = 'BLE4' | 'BLE42' | 'BLE50';
23
+ export interface GizLanProfile {
24
+ ip: string;
25
+ port: number;
26
+ cTime: number;
27
+ }
28
+ export interface GizBleProfile {
29
+ deviceId: string;
30
+ cTime: number;
31
+ RSSI: number;
32
+ blueToothType: BlueToothType;
33
+ blueToothVersion: BlueToothVersion;
34
+ }
35
+ export interface GizMQTTProfile {
36
+ host: string;
37
+ port: number;
38
+ }
39
+ export interface GizBleCapability extends GizBaseCapability {
40
+ profile: GizBleProfile;
41
+ }
42
+ export interface GizLanCapability extends GizBaseCapability {
43
+ profile: GizLanProfile;
44
+ }
45
+ export interface GizMQTTCapability extends GizBaseCapability {
46
+ profile: GizMQTTProfile;
47
+ }
48
+ export interface IDevice extends GizBaseProfile {
49
+ bleCapability: GizBleCapability;
50
+ lanCapability: GizLanCapability;
51
+ mqttCapability: GizMQTTCapability;
52
+ }
53
+ export interface TRNGizSDKManagerModule {
54
+ initSDK: (config: GizConfigStruct) => Promise<GizResult<any, any>>;
55
+ getDevices: () => Promise<GizResult<[IDevice], any>>;
56
+ }
57
+ export interface GizResult<T, E> {
58
+ success: boolean;
59
+ message: string;
60
+ data?: T;
61
+ error?: E;
62
+ }
63
+ export declare type GizCallback<T, E> = (error: GizResult<T, E>, data: GizResult<T, E>) => void;
64
+ export interface ServerInfoStruct {
65
+ openAPIInfo: string;
66
+ }
67
+ export interface ProductInfoStruct {
68
+ productKey: string;
69
+ productSecret: string;
70
+ }
71
+ export interface GizConfigStruct {
72
+ appID: string;
73
+ appSecret: string;
74
+ productInfos: ProductInfoStruct[];
75
+ serverInfo?: ServerInfoStruct;
76
+ }
77
+ export declare type GizWifiDeviceNetStatus = 0 | 1 | 2 | 3;
78
+ export declare type GizCapability = 0 | 1 | 2;
79
+ export interface DeviceDataRes {
80
+ device: GizBaseProfile;
81
+ data: any;
82
+ type: GizCapability;
83
+ }
84
+ export interface DeviceStateRes {
85
+ device: GizBaseProfile;
86
+ state: GizWifiDeviceNetStatus;
87
+ type: GizCapability;
88
+ }
89
+ export declare type DeviceDataCallback = (data: DeviceDataRes) => void;
90
+ export declare type DeviceStateCallback = (data: DeviceStateRes) => void;
91
+ export declare type DeviceListCallback = (data: IDevice[]) => void;
package/lib/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gizwits-sdk-v5",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Gizwits",
5
5
  "homepage": "https://github.com/demchenkoalex/react-native-gizwits-sdk-v5#readme",
6
6
  "main": "lib/index.js",