react-native-spike-sdk 1.0.7 → 1.0.8

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.
@@ -4,14 +4,14 @@ import SpikeSDK
4
4
  class SpikeConnectionListener: SpikeWebhookConnectionListener {
5
5
 
6
6
  private let connectionUUID: String
7
- private var onFailure: (String, String) -> Void
7
+ private var onLog: (String, String) -> Void
8
8
 
9
- init(connectionUUID: String, onFailure: @escaping (String, String) -> Void) {
9
+ init(connectionUUID: String, onLog: @escaping (String, String) -> Void) {
10
10
  self.connectionUUID = connectionUUID
11
- self.onFailure = onFailure
11
+ self.onLog = onLog
12
12
  }
13
13
 
14
14
  func onBackgroundLog(log: String) {
15
- onFailure(connectionUUID, log)
15
+ onLog(connectionUUID, log)
16
16
  }
17
17
  }
package/ios/SpikeSdk.m CHANGED
@@ -102,7 +102,7 @@ RCT_EXTERN_METHOD(getBackgroundDeliveryDataTypes: (NSString)connectionUUID
102
102
  withResolver: (RCTPromiseResolveBlock)resolve
103
103
  withRejecter: (RCTPromiseRejectBlock)reject)
104
104
 
105
- RCT_EXTERN_METHOD(getBackgroundLogs: (NSString)connectionUUID
105
+ RCT_EXTERN_METHOD(setListener: (NSString)connectionUUID
106
106
  withResolver: (RCTPromiseResolveBlock)resolve
107
107
  withRejecter: (RCTPromiseRejectBlock)reject)
108
108
 
@@ -457,7 +457,7 @@ class SpikeSdk: RCTEventEmitter {
457
457
  }
458
458
  }
459
459
 
460
- @objc(getBackgroundLogs:
460
+ @objc(setListener:
461
461
  withResolver:
462
462
  withRejecter:)
463
463
  func setListener(connectionUUID: String,
@@ -469,8 +469,9 @@ class SpikeSdk: RCTEventEmitter {
469
469
  }
470
470
 
471
471
  do {
472
- let logs = try connection.getBackgroundLogs()
473
- resolve(logs)
472
+ let listener = createListener(connectionUUID: connectionUUID)
473
+ try connection.setListener(listener: listener)
474
+ resolve(Void())
474
475
  } catch let error {
475
476
  spikeReject(with: error, reject: reject)
476
477
  }
@@ -483,7 +484,7 @@ class SpikeSdk: RCTEventEmitter {
483
484
  "onDebug",
484
485
  "onInfo",
485
486
  "onError",
486
- "onSubmissionFailure",
487
+ "onBackgroundLog",
487
488
  ]
488
489
  }
489
490
 
@@ -505,6 +506,17 @@ class SpikeSdk: RCTEventEmitter {
505
506
  }
506
507
  }
507
508
  }
509
+
510
+ private func createListener(connectionUUID: String) -> SpikeWebhookConnectionListener {
511
+ return SpikeConnectionListener(connectionUUID: connectionUUID) { [weak self] connectionUUID, log in
512
+ let body = [
513
+ "connectionUUID": connectionUUID,
514
+ "log": log
515
+ ]
516
+ self?.sendEvent(withName: "onBackgroundLog", body: body)
517
+ }
518
+ }
519
+
508
520
 
509
521
  private func spikeReject(with error: Error, reject: RCTPromiseRejectBlock) {
510
522
  let errorString = SpikeExceptionMapper.handleSpikeError(error)
@@ -10,6 +10,7 @@ var _SpikeException = require("./SpikeException");
10
10
  var _SpikeSdk = require("./SpikeSdk");
11
11
  var _SpikeDataType = require("./DataTypes/SpikeDataType");
12
12
  class SpikeWebhookConnection extends _SpikeConnection.SpikeConnection {
13
+ webhookListener = null;
13
14
  async getCallbackUrl() {
14
15
  if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
15
16
  return await _SpikeSdk.SpikeSdk.getCallbackUrl(this.connectionUUID);
@@ -37,13 +38,32 @@ class SpikeWebhookConnection extends _SpikeConnection.SpikeConnection {
37
38
  const dataTypes = await _SpikeSdk.SpikeSdk.getBackgroundDeliveryDataTypes(this.connectionUUID);
38
39
  return dataTypes.map(type => this.convertDataType(type));
39
40
  }
40
- async getBackgroundLogs() {
41
- if (_reactNative.Platform.OS !== 'ios') return [];
41
+ async setListener(listener) {
42
+ if (_reactNative.Platform.OS !== 'ios') return;
42
43
  if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
43
- return await _SpikeSdk.SpikeSdk.getBackgroundLogs(this.connectionUUID);
44
+ this.setupListener(listener);
45
+ await _SpikeSdk.SpikeSdk.setListener(this.connectionUUID);
44
46
  }
45
47
  async close() {
46
48
  await super.close();
49
+ this.removeListeners();
50
+ }
51
+ setupListener(listener) {
52
+ var _this$eventListener;
53
+ if (!_SpikeSdk.SpikeSdk) return;
54
+ this.removeListeners();
55
+ this.eventListener = new _reactNative.NativeEventEmitter(_SpikeSdk.SpikeSdk);
56
+ this.webhookListener = listener;
57
+ (_this$eventListener = this.eventListener) === null || _this$eventListener === void 0 ? void 0 : _this$eventListener.addListener('onBackgroundLog', data => {
58
+ var _this$webhookListener;
59
+ if (this.connectionUUID !== data.connectionUUID) return;
60
+ (_this$webhookListener = this.webhookListener) === null || _this$webhookListener === void 0 ? void 0 : _this$webhookListener.onBackgroundLog(data.log);
61
+ });
62
+ }
63
+ removeListeners() {
64
+ if (!this.eventListener) return;
65
+ this.eventListener.removeAllListeners('onBackgroundLog');
66
+ this.eventListener = undefined;
47
67
  }
48
68
  convertDataType(dataType) {
49
69
  if (dataType === 'activities_summary') {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_SpikeConnection","_SpikeException","_SpikeSdk","_SpikeDataType","SpikeWebhookConnection","SpikeConnection","getCallbackUrl","SpikeSdk","SpikeException","connectionUUID","extractAndPostData","dataType","json","rawValue","data","JSON","parse","extractAndPostDataInRange","from","to","getTime","enableBackgroundDelivery","dataTypes","Platform","OS","map","type","getBackgroundDeliveryDataTypes","convertDataType","getBackgroundLogs","close","SpikeActivitiesSummaryDataType","SpikeActivitiesStreamDataType","SpikeBreathingDataType","SpikeCaloriesDataType","SpikeDistanceDataType","SpikeGlucoseDataType","SpikeHeartDataType","SpikeOxygenSaturationDataType","SpikeSleepDataType","SpikeStepsDataType","SpikeBodyDataType","exports"],"sourceRoot":"../../src","sources":["SpikeWebhookConnection.ts"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_SpikeConnection","_SpikeException","_SpikeSdk","_SpikeDataType","SpikeWebhookConnection","SpikeConnection","webhookListener","getCallbackUrl","SpikeSdk","SpikeException","connectionUUID","extractAndPostData","dataType","json","rawValue","data","JSON","parse","extractAndPostDataInRange","from","to","getTime","enableBackgroundDelivery","dataTypes","Platform","OS","map","type","getBackgroundDeliveryDataTypes","convertDataType","setListener","listener","setupListener","close","removeListeners","_this$eventListener","eventListener","NativeEventEmitter","addListener","_this$webhookListener","onBackgroundLog","log","removeAllListeners","undefined","SpikeActivitiesSummaryDataType","SpikeActivitiesStreamDataType","SpikeBreathingDataType","SpikeCaloriesDataType","SpikeDistanceDataType","SpikeGlucoseDataType","SpikeHeartDataType","SpikeOxygenSaturationDataType","SpikeSleepDataType","SpikeStepsDataType","SpikeBodyDataType","exports"],"sourceRoot":"../../src","sources":["SpikeWebhookConnection.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["_SpikeDataTypes","require","_Spike","_SpikeConnection","_SpikeWebhookConnection","_default","setEnvironment","createConnection","createWebhookConnection","unpackConnection","getBackgroundConnections","ensurePermissionsAreGranted","initialize","exports","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AASA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AAAkE,IAAAI,QAAA,GAInD;EACbC,cAAc,EAAdA,qBAAc;EACdC,gBAAgB,EAAhBA,uBAAgB;EAChBC,uBAAuB,EAAvBA,8BAAuB;EACvBC,gBAAgB,EAAhBA,uBAAgB;EAChBC,wBAAwB,EAAxBA,+BAAwB;EACxBC,2BAA2B,EAA3BA,kCAA2B;EAC3BC,UAAU,EAAVA;AACF,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAT,QAAA"}
1
+ {"version":3,"names":["_SpikeDataTypes","require","_Spike","_SpikeConnection","_SpikeWebhookConnection","_default","setEnvironment","createConnection","createWebhookConnection","unpackConnection","getBackgroundConnections","ensurePermissionsAreGranted","initialize","exports","default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AASA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AAAkE,IAAAI,QAAA,GAKnD;EACbC,cAAc,EAAdA,qBAAc;EACdC,gBAAgB,EAAhBA,uBAAgB;EAChBC,uBAAuB,EAAvBA,8BAAuB;EACvBC,gBAAgB,EAAhBA,uBAAgB;EAChBC,wBAAwB,EAAxBA,+BAAwB;EACxBC,2BAA2B,EAA3BA,kCAA2B;EAC3BC,UAAU,EAAVA;AACF,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAT,QAAA"}
@@ -1,9 +1,10 @@
1
- import { Platform } from 'react-native';
1
+ import { NativeEventEmitter, Platform } from 'react-native';
2
2
  import { SpikeConnection } from './SpikeConnection';
3
3
  import { SpikeException } from './SpikeException';
4
4
  import { SpikeSdk } from './SpikeSdk';
5
5
  import { SpikeActivitiesStreamDataType, SpikeActivitiesSummaryDataType, SpikeBodyDataType, SpikeBreathingDataType, SpikeCaloriesDataType, SpikeDistanceDataType, SpikeGlucoseDataType, SpikeHeartDataType, SpikeOxygenSaturationDataType, SpikeSleepDataType, SpikeStepsDataType } from './DataTypes/SpikeDataType';
6
6
  export class SpikeWebhookConnection extends SpikeConnection {
7
+ webhookListener = null;
7
8
  async getCallbackUrl() {
8
9
  if (!SpikeSdk) throw new SpikeException();
9
10
  return await SpikeSdk.getCallbackUrl(this.connectionUUID);
@@ -31,13 +32,32 @@ export class SpikeWebhookConnection extends SpikeConnection {
31
32
  const dataTypes = await SpikeSdk.getBackgroundDeliveryDataTypes(this.connectionUUID);
32
33
  return dataTypes.map(type => this.convertDataType(type));
33
34
  }
34
- async getBackgroundLogs() {
35
- if (Platform.OS !== 'ios') return [];
35
+ async setListener(listener) {
36
+ if (Platform.OS !== 'ios') return;
36
37
  if (!SpikeSdk) throw new SpikeException();
37
- return await SpikeSdk.getBackgroundLogs(this.connectionUUID);
38
+ this.setupListener(listener);
39
+ await SpikeSdk.setListener(this.connectionUUID);
38
40
  }
39
41
  async close() {
40
42
  await super.close();
43
+ this.removeListeners();
44
+ }
45
+ setupListener(listener) {
46
+ var _this$eventListener;
47
+ if (!SpikeSdk) return;
48
+ this.removeListeners();
49
+ this.eventListener = new NativeEventEmitter(SpikeSdk);
50
+ this.webhookListener = listener;
51
+ (_this$eventListener = this.eventListener) === null || _this$eventListener === void 0 ? void 0 : _this$eventListener.addListener('onBackgroundLog', data => {
52
+ var _this$webhookListener;
53
+ if (this.connectionUUID !== data.connectionUUID) return;
54
+ (_this$webhookListener = this.webhookListener) === null || _this$webhookListener === void 0 ? void 0 : _this$webhookListener.onBackgroundLog(data.log);
55
+ });
56
+ }
57
+ removeListeners() {
58
+ if (!this.eventListener) return;
59
+ this.eventListener.removeAllListeners('onBackgroundLog');
60
+ this.eventListener = undefined;
41
61
  }
42
62
  convertDataType(dataType) {
43
63
  if (dataType === 'activities_summary') {
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","SpikeConnection","SpikeException","SpikeSdk","SpikeActivitiesStreamDataType","SpikeActivitiesSummaryDataType","SpikeBodyDataType","SpikeBreathingDataType","SpikeCaloriesDataType","SpikeDistanceDataType","SpikeGlucoseDataType","SpikeHeartDataType","SpikeOxygenSaturationDataType","SpikeSleepDataType","SpikeStepsDataType","SpikeWebhookConnection","getCallbackUrl","connectionUUID","extractAndPostData","dataType","json","rawValue","data","JSON","parse","extractAndPostDataInRange","from","to","getTime","enableBackgroundDelivery","dataTypes","OS","map","type","getBackgroundDeliveryDataTypes","convertDataType","getBackgroundLogs","close"],"sourceRoot":"../../src","sources":["SpikeWebhookConnection.ts"],"mappings":"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"}
1
+ {"version":3,"names":["NativeEventEmitter","Platform","SpikeConnection","SpikeException","SpikeSdk","SpikeActivitiesStreamDataType","SpikeActivitiesSummaryDataType","SpikeBodyDataType","SpikeBreathingDataType","SpikeCaloriesDataType","SpikeDistanceDataType","SpikeGlucoseDataType","SpikeHeartDataType","SpikeOxygenSaturationDataType","SpikeSleepDataType","SpikeStepsDataType","SpikeWebhookConnection","webhookListener","getCallbackUrl","connectionUUID","extractAndPostData","dataType","json","rawValue","data","JSON","parse","extractAndPostDataInRange","from","to","getTime","enableBackgroundDelivery","dataTypes","OS","map","type","getBackgroundDeliveryDataTypes","convertDataType","setListener","listener","setupListener","close","removeListeners","_this$eventListener","eventListener","addListener","_this$webhookListener","onBackgroundLog","log","removeAllListeners","undefined"],"sourceRoot":"../../src","sources":["SpikeWebhookConnection.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["SpikeDataTypes","setEnvironment","createConnection","createWebhookConnection","unpackConnection","getBackgroundConnections","ensurePermissionsAreGranted","initialize","SpikeConnection","SpikeWebhookConnection"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,cAAc,QAAQ,6BAA6B;AAG5D,SACEC,cAAc,EACdC,gBAAgB,EAChBC,uBAAuB,EACvBC,gBAAgB,EAChBC,wBAAwB,EACxBC,2BAA2B,EAC3BC,UAAU,QACL,SAAS;AAChB,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,sBAAsB,QAAQ,0BAA0B;AAIjE,eAAe;EACbR,cAAc;EACdC,gBAAgB;EAChBC,uBAAuB;EACvBC,gBAAgB;EAChBC,wBAAwB;EACxBC,2BAA2B;EAC3BC;AACF,CAAC;AAED,SACEC,eAAe,EACfC,sBAAsB,EACtBT,cAAc"}
1
+ {"version":3,"names":["SpikeDataTypes","setEnvironment","createConnection","createWebhookConnection","unpackConnection","getBackgroundConnections","ensurePermissionsAreGranted","initialize","SpikeConnection","SpikeWebhookConnection"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,cAAc,QAAQ,6BAA6B;AAG5D,SACEC,cAAc,EACdC,gBAAgB,EAChBC,uBAAuB,EACvBC,gBAAgB,EAChBC,wBAAwB,EACxBC,2BAA2B,EAC3BC,UAAU,QACL,SAAS;AAChB,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,sBAAsB,QAAQ,0BAA0B;AAKjE,eAAe;EACbR,cAAc;EACdC,gBAAgB;EAChBC,uBAAuB;EACvBC,gBAAgB;EAChBC,wBAAwB;EACxBC,2BAA2B;EAC3BC;AACF,CAAC;AAED,SACEC,eAAe,EACfC,sBAAsB,EACtBT,cAAc"}
@@ -2,14 +2,19 @@ import { SpikeConnection } from './SpikeConnection';
2
2
  import type { SpikeWebhookJob } from './DataModels/SpikeWebhookJob';
3
3
  import type { SpikeDataEntry } from './DataModels/SpikeData';
4
4
  import { SpikeDataType } from './DataTypes/SpikeDataType';
5
+ import type { SpikeWebhookConnectionListener } from './SpikeWebhookConnectionListener';
5
6
  export declare class SpikeWebhookConnection extends SpikeConnection {
7
+ private eventListener;
8
+ private webhookListener;
6
9
  getCallbackUrl(): Promise<string>;
7
10
  extractAndPostData<DataEntry extends SpikeDataEntry>(dataType: SpikeDataType<DataEntry>): Promise<SpikeWebhookJob>;
8
11
  extractAndPostDataInRange<DataEntry extends SpikeDataEntry>(dataType: SpikeDataType<DataEntry>, from: Date, to: Date): Promise<SpikeWebhookJob>;
9
12
  enableBackgroundDelivery<DataEntry extends SpikeDataEntry>(dataTypes: SpikeDataType<DataEntry>[]): Promise<void>;
10
13
  getBackgroundDeliveryDataTypes<DataEntry extends SpikeDataEntry>(): Promise<SpikeDataType<DataEntry>[]>;
11
- getBackgroundLogs(): Promise<string[]>;
14
+ setListener(listener: SpikeWebhookConnectionListener | null): Promise<void>;
12
15
  close(): Promise<void>;
16
+ private setupListener;
17
+ private removeListeners;
13
18
  private convertDataType;
14
19
  }
15
20
  //# sourceMappingURL=SpikeWebhookConnection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpikeWebhookConnection.d.ts","sourceRoot":"","sources":["../../src/SpikeWebhookConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAML,aAAa,EAOd,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,sBAAuB,SAAQ,eAAe;IACnD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAMjC,kBAAkB,CAAC,SAAS,SAAS,cAAc,EACvD,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC;IAWrB,yBAAyB,CAAC,SAAS,SAAS,cAAc,EAC9D,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,EAClC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,GACP,OAAO,CAAC,eAAe,CAAC;IAarB,wBAAwB,CAAC,SAAS,SAAS,cAAc,EAC7D,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC;IAUV,8BAA8B,CAClC,SAAS,SAAS,cAAc,KAC7B,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAUlC,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,eAAe;CA4BxB"}
1
+ {"version":3,"file":"SpikeWebhookConnection.d.ts","sourceRoot":"","sources":["../../src/SpikeWebhookConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAML,aAAa,EAOd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAOvF,qBAAa,sBAAuB,SAAQ,eAAe;IACzD,OAAO,CAAC,aAAa,CAAiC;IAEtD,OAAO,CAAC,eAAe,CAA+C;IAEhE,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAMjC,kBAAkB,CAAC,SAAS,SAAS,cAAc,EACvD,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC;IAWrB,yBAAyB,CAAC,SAAS,SAAS,cAAc,EAC9D,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,EAClC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,GACP,OAAO,CAAC,eAAe,CAAC;IAarB,wBAAwB,CAAC,SAAS,SAAS,cAAc,EAC7D,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC;IAUV,8BAA8B,CAClC,SAAS,SAAS,cAAc,KAC7B,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAUlC,WAAW,CACf,QAAQ,EAAE,8BAA8B,GAAG,IAAI,GAC9C,OAAO,CAAC,IAAI,CAAC;IASV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,eAAe;CA4BxB"}
@@ -4,6 +4,7 @@ import type { SpikeDataEntry } from './DataModels/SpikeData';
4
4
  import { SpikeConnection } from './SpikeConnection';
5
5
  import { SpikeWebhookConnection } from './SpikeWebhookConnection';
6
6
  import type { SpikeLogger } from './SpikeLogger';
7
+ import type { SpikeWebhookConnectionListener } from './SpikeWebhookConnectionListener';
7
8
  import type { SpikeEnvironment } from './SpikeEnvironment';
8
9
  declare const _default: {
9
10
  setEnvironment: (env: SpikeEnvironment) => Promise<void>;
@@ -15,5 +16,5 @@ declare const _default: {
15
16
  initialize: () => void;
16
17
  };
17
18
  export default _default;
18
- export { SpikeConnection, SpikeWebhookConnection, SpikeDataTypes, SpikeDataType, SpikeDataEntry, SpikeLogger, SpikeEnvironment, };
19
+ export { SpikeConnection, SpikeWebhookConnection, SpikeDataTypes, SpikeDataType, SpikeDataEntry, SpikeLogger, SpikeWebhookConnectionListener, SpikeEnvironment, };
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;;;;;;;;;;AAE3D,wBAQE;AAEF,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;;;;;;;;;;AAE3D,wBAQE;AAEF,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,8BAA8B,EAC9B,gBAAgB,GACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-spike-sdk",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "Spike API for health and productivity data from wearables and IoT devices",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -5,7 +5,7 @@ folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1
5
5
 
6
6
  Pod::Spec.new do |s|
7
7
  s.name = "react-native-spike-sdk"
8
- s.version = "1.0.7"
8
+ s.version = "1.0.8"
9
9
  s.summary = "Spike API for health and productivity data from wearables and IoT devices"
10
10
 
11
11
  s.description = <<-DESC
@@ -25,7 +25,7 @@ Pod::Spec.new do |s|
25
25
  s.swift_version = "5"
26
26
 
27
27
  s.dependency "React-Core"
28
- s.dependency "SpikeSDK", "1.0.8"
28
+ s.dependency "SpikeSDK", "1.0.12"
29
29
 
30
30
  # Don't install the dependencies when we run `pod install` in the old architecture.
31
31
  if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
@@ -1,4 +1,4 @@
1
- import { Platform } from 'react-native';
1
+ import { NativeEventEmitter, Platform } from 'react-native';
2
2
  import { SpikeConnection } from './SpikeConnection';
3
3
  import { SpikeException } from './SpikeException';
4
4
  import { SpikeSdk } from './SpikeSdk';
@@ -18,8 +18,18 @@ import {
18
18
  SpikeSleepDataType,
19
19
  SpikeStepsDataType,
20
20
  } from './DataTypes/SpikeDataType';
21
+ import type { SpikeWebhookConnectionListener } from './SpikeWebhookConnectionListener';
22
+
23
+ interface IBackgroundLog {
24
+ connectionUUID: string;
25
+ log: string;
26
+ }
21
27
 
22
28
  export class SpikeWebhookConnection extends SpikeConnection {
29
+ private eventListener: NativeEventEmitter | undefined;
30
+
31
+ private webhookListener: SpikeWebhookConnectionListener | null = null;
32
+
23
33
  async getCallbackUrl(): Promise<string> {
24
34
  if (!SpikeSdk) throw new SpikeException();
25
35
 
@@ -80,15 +90,45 @@ export class SpikeWebhookConnection extends SpikeConnection {
80
90
  return dataTypes.map((type) => this.convertDataType(type));
81
91
  }
82
92
 
83
- async getBackgroundLogs(): Promise<string[]> {
84
- if (Platform.OS !== 'ios') return [];
93
+ async setListener(
94
+ listener: SpikeWebhookConnectionListener | null
95
+ ): Promise<void> {
96
+ if (Platform.OS !== 'ios') return;
85
97
  if (!SpikeSdk) throw new SpikeException();
86
98
 
87
- return await SpikeSdk.getBackgroundLogs(this.connectionUUID);
99
+ this.setupListener(listener);
100
+
101
+ await SpikeSdk.setListener(this.connectionUUID);
88
102
  }
89
103
 
90
104
  async close(): Promise<void> {
91
105
  await super.close();
106
+
107
+ this.removeListeners();
108
+ }
109
+
110
+ private setupListener(listener: SpikeWebhookConnectionListener | null) {
111
+ if (!SpikeSdk) return;
112
+
113
+ this.removeListeners();
114
+
115
+ this.eventListener = new NativeEventEmitter(SpikeSdk);
116
+ this.webhookListener = listener;
117
+
118
+ this.eventListener?.addListener(
119
+ 'onBackgroundLog',
120
+ (data: IBackgroundLog) => {
121
+ if (this.connectionUUID !== data.connectionUUID) return;
122
+ this.webhookListener?.onBackgroundLog(data.log);
123
+ }
124
+ );
125
+ }
126
+
127
+ private removeListeners() {
128
+ if (!this.eventListener) return;
129
+
130
+ this.eventListener.removeAllListeners('onBackgroundLog');
131
+ this.eventListener = undefined;
92
132
  }
93
133
 
94
134
  private convertDataType<DataEntry extends SpikeDataEntry>(
package/src/index.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  import { SpikeConnection } from './SpikeConnection';
14
14
  import { SpikeWebhookConnection } from './SpikeWebhookConnection';
15
15
  import type { SpikeLogger } from './SpikeLogger';
16
+ import type { SpikeWebhookConnectionListener } from './SpikeWebhookConnectionListener';
16
17
  import type { SpikeEnvironment } from './SpikeEnvironment';
17
18
 
18
19
  export default {
@@ -32,5 +33,6 @@ export {
32
33
  SpikeDataType,
33
34
  SpikeDataEntry,
34
35
  SpikeLogger,
36
+ SpikeWebhookConnectionListener,
35
37
  SpikeEnvironment,
36
38
  };