@tryvital/vital-health-react-native 5.3.4 → 5.4.1

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.
@@ -129,7 +129,7 @@ repositories {
129
129
  }
130
130
 
131
131
  def kotlin_version = getExtOrDefault('kotlinVersion')
132
- def vital_sdk_version = '4.1.4'
132
+ def vital_sdk_version = '4.2.1'
133
133
 
134
134
  dependencies {
135
135
  //noinspection GradleDynamicVersion
@@ -2,15 +2,17 @@ package com.vitalhealthreactnative
2
2
 
3
3
  sealed class VitalHealthEvent(val value: String) {
4
4
  object Status : VitalHealthEvent("Status")
5
+ object ConnectionStatus : VitalHealthEvent("VitalHealthConnectionStatus")
5
6
 
6
7
  companion object {
7
8
  fun values(): Array<VitalHealthEvent> {
8
- return arrayOf(Status)
9
+ return arrayOf(Status, ConnectionStatus)
9
10
  }
10
11
 
11
12
  fun valueOf(value: String): VitalHealthEvent {
12
13
  return when (value) {
13
14
  "Status" -> Status
15
+ "VitalHealthConnectionStatus" -> ConnectionStatus
14
16
  else -> throw IllegalArgumentException("Invalid VitalHealthEvent value: $value")
15
17
  }
16
18
  }
@@ -32,6 +32,7 @@ import kotlinx.serialization.json.Json
32
32
  import kotlinx.serialization.json.JsonObject
33
33
  import kotlinx.serialization.json.jsonPrimitive
34
34
  import java.time.Instant
35
+ import java.util.Locale
35
36
  import java.util.concurrent.atomic.AtomicReference
36
37
  import kotlin.time.Duration.Companion.milliseconds
37
38
 
@@ -67,6 +68,7 @@ class VitalHealthReactNativeModule(reactContext: ReactApplicationContext) :
67
68
  syncOnAppStart: Boolean,
68
69
  numberOfDaysToBackFill: Int,
69
70
  enableLogs: Boolean,
71
+ connectionPolicy: String,
70
72
  promise: Promise
71
73
  ) = runOnMain {
72
74
  logger.enabled = enableLogs
@@ -89,6 +91,9 @@ class VitalHealthReactNativeModule(reactContext: ReactApplicationContext) :
89
91
  logsEnabled = enableLogs,
90
92
  syncOnAppStart = syncOnAppStart,
91
93
  numberOfDaysToBackFill = numberOfDaysToBackFill,
94
+ connectionPolicy = kotlin.runCatching {
95
+ ConnectionPolicy.valueOf(connectionPolicy.replaceFirstChar { it.titlecase() })
96
+ }.getOrNull() ?: ConnectionPolicy.AutoConnect
92
97
  )
93
98
 
94
99
  promise.resolve(null)
@@ -383,6 +388,31 @@ class VitalHealthReactNativeModule(reactContext: ReactApplicationContext) :
383
388
  promise.resolve(null)
384
389
  }
385
390
 
391
+ @ReactMethod
392
+ fun getConnectionStatus(promise: Promise) = runOnMain {
393
+ promise.resolve(vitalHealthConnectManager.connectionStatus.value.name.replaceFirstChar { it.lowercase() })
394
+ }
395
+
396
+ @ReactMethod
397
+ fun connect(promise: Promise) = runOnMain {
398
+ try {
399
+ vitalHealthConnectManager.connect()
400
+ promise.resolve(null)
401
+ } catch (e: Throwable) {
402
+ promise.reject("VitalHealthError", e.message, e)
403
+ }
404
+ }
405
+
406
+ @ReactMethod
407
+ fun disconnect(promise: Promise) = runOnMain {
408
+ try {
409
+ vitalHealthConnectManager.disconnect()
410
+ promise.resolve(null)
411
+ } catch (e: Throwable) {
412
+ promise.reject("VitalHealthError", e.message, e)
413
+ }
414
+ }
415
+
386
416
  @ReactMethod
387
417
  fun addListener(eventName: String?) {
388
418
  // Keep: Required for RN built in Event Emitter Calls.
@@ -396,7 +426,6 @@ class VitalHealthReactNativeModule(reactContext: ReactApplicationContext) :
396
426
  private fun VitalHealthConnectManager.startStatusUpdate() {
397
427
  this.status
398
428
  .onEach {
399
- logger.logI("Status: $it")
400
429
  when (it) {
401
430
  is SyncStatus.ResourceSyncFailed -> {
402
431
  sendEvent(VitalHealthEvent.Status, WritableNativeMap().apply {
@@ -435,6 +464,12 @@ class VitalHealthReactNativeModule(reactContext: ReactApplicationContext) :
435
464
  }
436
465
  }
437
466
  .launchIn(mainScope)
467
+
468
+ this.connectionStatus
469
+ .onEach {
470
+ sendEvent(VitalHealthEvent.ConnectionStatus, it.name.replaceFirstChar { it.lowercase() })
471
+ }
472
+ .launchIn(mainScope)
438
473
  }
439
474
 
440
475
  private fun sendEvent(event: VitalHealthEvent, params: Any) {
@@ -5,6 +5,7 @@
5
5
  RCT_EXTERN_METHOD(configure:(BOOL)backgroundDeliveryEnabled
6
6
  numberOfDaysToBackFill:(int)numberOfDaysToBackFill
7
7
  enableLogs:(BOOL)enableLogs
8
+ connectionPolicy:(NSString *)connectionPolicy
8
9
  resolver:(RCTPromiseResolveBlock)resolve
9
10
  rejecter:(RCTPromiseRejectBlock)reject)
10
11
 
@@ -50,6 +51,15 @@ RCT_EXTERN_METHOD(setPauseSynchronization:(BOOL)resource
50
51
  RCT_EXTERN_METHOD(openPlatformHealthApp:(RCTPromiseResolveBlock)resolve
51
52
  rejecter:(RCTPromiseRejectBlock)reject)
52
53
 
54
+ RCT_EXTERN_METHOD(getConnectionStatus:(RCTPromiseResolveBlock)resolve
55
+ rejecter:(RCTPromiseRejectBlock)reject)
56
+
57
+ RCT_EXTERN_METHOD(connect:(RCTPromiseResolveBlock)resolve
58
+ rejecter:(RCTPromiseRejectBlock)reject)
59
+
60
+ RCT_EXTERN_METHOD(disconnect:(RCTPromiseResolveBlock)resolve
61
+ rejecter:(RCTPromiseRejectBlock)reject)
62
+
53
63
  RCT_EXTERN_METHOD(openSyncProgressView:(RCTPromiseResolveBlock)resolve
54
64
  rejecter:(RCTPromiseRejectBlock)reject)
55
65
 
@@ -8,6 +8,7 @@ import HealthKit
8
8
  class VitalHealthReactNative: RCTEventEmitter {
9
9
 
10
10
  public var cancellable: AnyCancellable?
11
+ public var cancellable2: AnyCancellable?
11
12
 
12
13
  /// Whether or not this native module is active & not invalidated.
13
14
  var isActive: Bool {
@@ -16,6 +17,7 @@ class VitalHealthReactNative: RCTEventEmitter {
16
17
 
17
18
  deinit {
18
19
  cancellable?.cancel()
20
+ cancellable2?.cancel()
19
21
  }
20
22
 
21
23
  override init() {
@@ -50,17 +52,24 @@ class VitalHealthReactNative: RCTEventEmitter {
50
52
 
51
53
  self.sendEvent(withName: "Status", body: payload)
52
54
  }
55
+
56
+ cancellable2 = VitalHealthKitClient.shared.connectionStatusPublisher().sink { [weak self] status in
57
+ guard let self = self, self.isActive else { return }
58
+
59
+ self.sendEvent(withName: "VitalHealthConnectionStatus", body: status.rawValue)
60
+ }
53
61
  }
54
62
 
55
63
  override func supportedEvents() -> [String]! {
56
- return ["Status"]
64
+ return ["Status", "VitalHealthConnectionStatus"]
57
65
  }
58
66
 
59
- @objc(configure:numberOfDaysToBackFill:enableLogs:resolver:rejecter:)
67
+ @objc(configure:numberOfDaysToBackFill:enableLogs:connectionPolicy:resolver:rejecter:)
60
68
  func configure(
61
69
  _ backgroundDeliveryEnabled: Bool,
62
70
  numberOfDaysToBackFill: Int,
63
71
  enableLogs: Bool,
72
+ connectionPolicy: String,
64
73
  resolve: @escaping RCTPromiseResolveBlock,
65
74
  reject: RCTPromiseRejectBlock
66
75
  ) {
@@ -68,7 +77,8 @@ class VitalHealthReactNative: RCTEventEmitter {
68
77
  .init(
69
78
  backgroundDeliveryEnabled: backgroundDeliveryEnabled,
70
79
  numberOfDaysToBackFill: numberOfDaysToBackFill,
71
- logsEnabled: enableLogs
80
+ logsEnabled: enableLogs,
81
+ connectionPolicy: VitalHealthKitClient.ConnectionPolicy(rawValue: connectionPolicy) ?? .autoConnect
72
82
  )
73
83
  )
74
84
  resolve(())
@@ -277,6 +287,37 @@ class VitalHealthReactNative: RCTEventEmitter {
277
287
  }
278
288
  }
279
289
 
290
+ @objc(getConnectionStatus:rejecter:)
291
+ func getConnectionStatus(_ resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
292
+ resolve(VitalHealthKitClient.shared.connectionStatus.rawValue)
293
+ }
294
+
295
+ @objc(connect:rejecter:)
296
+ func connect(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
297
+ Task { @MainActor in
298
+ do {
299
+ try await VitalHealthKitClient.shared.connect()
300
+ resolve(())
301
+
302
+ } catch let error {
303
+ reject("VitalHealthError", "\(error)", error)
304
+ }
305
+ }
306
+ }
307
+
308
+ @objc(disconnect:rejecter:)
309
+ func disconnect(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
310
+ Task { @MainActor in
311
+ do {
312
+ try await VitalHealthKitClient.shared.disconnect()
313
+ resolve(())
314
+
315
+ } catch let error {
316
+ reject("VitalHealthError", "\(error)", error)
317
+ }
318
+ }
319
+ }
320
+
280
321
  @objc(openSyncProgressView:rejecter:)
281
322
  func openSyncProgressView(_ resolve: @escaping RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
282
323
  DispatchQueue.main.async {
@@ -417,3 +458,18 @@ enum VitalError: Error {
417
458
  case UnsupportedBrand(String)
418
459
  case UnsupportedKind(String)
419
460
  }
461
+
462
+ extension VitalHealthKitClient.ConnectionStatus {
463
+ var rawValue: String {
464
+ switch self {
465
+ case .autoConnect:
466
+ return "autoConnect"
467
+ case .connected:
468
+ return "connected"
469
+ case .connectionPaused:
470
+ return "connectionPaused"
471
+ case .disconnected:
472
+ return "disconnected"
473
+ }
474
+ }
475
+ }
@@ -7,6 +7,7 @@ exports.IOSHealthConfig = exports.HealthConfig = exports.AndroidHealthConfig = v
7
7
  class HealthConfig {
8
8
  logsEnabled = true;
9
9
  numberOfDaysToBackFill = 30;
10
+ connectionPolicy = 'autoConnect';
10
11
  androidConfig = new AndroidHealthConfig();
11
12
  iOSConfig = new IOSHealthConfig();
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"names":["HealthConfig","logsEnabled","numberOfDaysToBackFill","androidConfig","AndroidHealthConfig","iOSConfig","IOSHealthConfig","exports","syncOnAppStart","dataPushMode","backgroundDeliveryEnabled"],"sourceRoot":"../../src","sources":["health_config.ts"],"mappings":";;;;;;AAAO,MAAMA,YAAY,CAAC;EACxBC,WAAW,GAAG,IAAI;EAClBC,sBAAsB,GAAG,EAAE;EAC3BC,aAAa,GAAG,IAAIC,mBAAmB,CAAC,CAAC;EACzCC,SAAS,GAAG,IAAIC,eAAe,CAAC,CAAC;AACnC;AAACC,OAAA,CAAAP,YAAA,GAAAA,YAAA;AAEM,MAAMI,mBAAmB,CAAC;EAC/BI,cAAc,GAAG,IAAI;AACvB;AAACD,OAAA,CAAAH,mBAAA,GAAAA,mBAAA;AAEM,MAAME,eAAe,CAAC;EAC3BG,YAAY,GAAG,WAAW;EAC1BC,yBAAyB,GAAG,IAAI;AAClC;AAACH,OAAA,CAAAD,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["HealthConfig","logsEnabled","numberOfDaysToBackFill","connectionPolicy","androidConfig","AndroidHealthConfig","iOSConfig","IOSHealthConfig","exports","syncOnAppStart","dataPushMode","backgroundDeliveryEnabled"],"sourceRoot":"../../src","sources":["health_config.ts"],"mappings":";;;;;;AAEO,MAAMA,YAAY,CAAC;EACxBC,WAAW,GAAG,IAAI;EAClBC,sBAAsB,GAAG,EAAE;EAC3BC,gBAAgB,GAAqB,aAAa;EAClDC,aAAa,GAAG,IAAIC,mBAAmB,CAAC,CAAC;EACzCC,SAAS,GAAG,IAAIC,eAAe,CAAC,CAAC;AACnC;AAACC,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAEM,MAAMK,mBAAmB,CAAC;EAC/BI,cAAc,GAAG,IAAI;AACvB;AAACD,OAAA,CAAAH,mBAAA,GAAAA,mBAAA;AAEM,MAAME,eAAe,CAAC;EAC3BG,YAAY,GAAG,WAAW;EAC1BC,yBAAyB,GAAG,IAAI;AAClC;AAACH,OAAA,CAAAD,eAAA,GAAAA,eAAA"}
@@ -41,9 +41,33 @@ const VitalHealthEvents = exports.VitalHealthEvents = {
41
41
  };
42
42
  class VitalHealth {
43
43
  static status = new _reactNative.NativeEventEmitter(VitalHealthReactNative);
44
+ static eventEmitter = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.VitalHealthReactNative);
45
+ static setEventEmitter(emitter) {
46
+ this.eventEmitter = emitter;
47
+ }
44
48
  static get canEnableBackgroundSyncNoninteractively() {
45
49
  return _reactNative.Platform.OS !== 'android';
46
50
  }
51
+ static get connectionStatus() {
52
+ return VitalHealthReactNative.getConnectionStatus();
53
+ }
54
+ static observeConnectionStatusChange(listener) {
55
+ var isCancelled = false;
56
+ const wrappedListener = status => {
57
+ if (isCancelled) {
58
+ return;
59
+ }
60
+ listener(status);
61
+ };
62
+ const subscription = this.eventEmitter.addListener("VitalHealthConnectionStatus", wrappedListener);
63
+ this.connectionStatus.then(wrappedListener);
64
+ return {
65
+ remove() {
66
+ isCancelled = true;
67
+ subscription.remove();
68
+ }
69
+ };
70
+ }
47
71
 
48
72
  /**
49
73
  * Whether health data sync is paused at the moment.
@@ -108,12 +132,30 @@ class VitalHealth {
108
132
  }
109
133
  static configure(healthConfig) {
110
134
  if (_reactNative.Platform.OS === 'android') {
111
- return VitalHealthReactNative.configure(healthConfig.androidConfig.syncOnAppStart, healthConfig.numberOfDaysToBackFill, healthConfig.logsEnabled);
135
+ return VitalHealthReactNative.configure(healthConfig.androidConfig.syncOnAppStart, healthConfig.numberOfDaysToBackFill, healthConfig.logsEnabled, healthConfig.connectionPolicy);
112
136
  } else {
113
- return VitalHealthReactNative.configure(healthConfig.iOSConfig.backgroundDeliveryEnabled, healthConfig.numberOfDaysToBackFill, healthConfig.logsEnabled);
137
+ return VitalHealthReactNative.configure(healthConfig.iOSConfig.backgroundDeliveryEnabled, healthConfig.numberOfDaysToBackFill, healthConfig.logsEnabled, healthConfig.connectionPolicy);
114
138
  }
115
139
  }
116
140
 
141
+ /**
142
+ * Setup a HealthKit (iOS) or Health Connect (Android) connection with this device.
143
+ *
144
+ * @precondition You must configure the Health SDK to use the `explicit` Connection Policy.
145
+ */
146
+ static async connect() {
147
+ return await VitalHealthReactNative.connect();
148
+ }
149
+
150
+ /**
151
+ * Disconnect the active HealthKit (iOS) or Health Connect (Android) connection with this device.
152
+ *
153
+ * @precondition You must configure the Health SDK to use the `explicit` Connection Policy.
154
+ */
155
+ static async disconnect() {
156
+ return await VitalHealthReactNative.disconnect();
157
+ }
158
+
117
159
  /**
118
160
  * IMPORTANT: This is Android-only API.
119
161
  *
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_health_config","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","LINKING_ERROR","Platform","select","ios","default","VitalHealthReactNative","NativeModules","Proxy","Error","VitalHealthReactNativeModule","VitalHealthEvents","statusEvent","VitalHealth","status","NativeEventEmitter","canEnableBackgroundSyncNoninteractively","OS","pauseSynchronization","getPauseSynchronization","isBackgroundSyncEnabled","Promise","resolve","backgroundSyncMinimumInterval","autoSyncThrottle","isAvailable","configure","healthConfig","androidConfig","syncOnAppStart","numberOfDaysToBackFill","logsEnabled","iOSConfig","backgroundDeliveryEnabled","enableBackgroundSync","disableBackgroundSync","setSyncNotificationContent","content","JSON","stringify","setAutoSyncThrottle","thresholdInMilliseconds","setBackgroundSyncMinimumInterval","intervalInMilliseconds","setPauseSynchronization","paused","askForResources","resources","ask","readResources","writeResources","config","undefined","type","result","writeHealthData","resource","value","startDate","endDate","getTime","hasAskedForPermission","syncData","openPlatformHealthApp","openSyncProgressView","VitalResource","VitalWriteResource"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_health_config","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","LINKING_ERROR","Platform","select","ios","default","VitalHealthReactNative","NativeModules","Proxy","Error","VitalHealthReactNativeModule","VitalHealthEvents","statusEvent","VitalHealth","status","NativeEventEmitter","eventEmitter","setEventEmitter","emitter","canEnableBackgroundSyncNoninteractively","OS","connectionStatus","getConnectionStatus","observeConnectionStatusChange","listener","isCancelled","wrappedListener","subscription","addListener","then","remove","pauseSynchronization","getPauseSynchronization","isBackgroundSyncEnabled","Promise","resolve","backgroundSyncMinimumInterval","autoSyncThrottle","isAvailable","configure","healthConfig","androidConfig","syncOnAppStart","numberOfDaysToBackFill","logsEnabled","connectionPolicy","iOSConfig","backgroundDeliveryEnabled","connect","disconnect","enableBackgroundSync","disableBackgroundSync","setSyncNotificationContent","content","JSON","stringify","setAutoSyncThrottle","thresholdInMilliseconds","setBackgroundSyncMinimumInterval","intervalInMilliseconds","setPauseSynchronization","paused","askForResources","resources","ask","readResources","writeResources","config","undefined","type","result","writeHealthData","resource","value","startDate","endDate","getTime","hasAskedForPermission","syncData","openPlatformHealthApp","openSyncProgressView","VitalResource","VitalWriteResource"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export class HealthConfig {
2
2
  logsEnabled = true;
3
3
  numberOfDaysToBackFill = 30;
4
+ connectionPolicy = 'autoConnect';
4
5
  androidConfig = new AndroidHealthConfig();
5
6
  iOSConfig = new IOSHealthConfig();
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"names":["HealthConfig","logsEnabled","numberOfDaysToBackFill","androidConfig","AndroidHealthConfig","iOSConfig","IOSHealthConfig","syncOnAppStart","dataPushMode","backgroundDeliveryEnabled"],"sourceRoot":"../../src","sources":["health_config.ts"],"mappings":"AAAA,OAAO,MAAMA,YAAY,CAAC;EACxBC,WAAW,GAAG,IAAI;EAClBC,sBAAsB,GAAG,EAAE;EAC3BC,aAAa,GAAG,IAAIC,mBAAmB,CAAC,CAAC;EACzCC,SAAS,GAAG,IAAIC,eAAe,CAAC,CAAC;AACnC;AAEA,OAAO,MAAMF,mBAAmB,CAAC;EAC/BG,cAAc,GAAG,IAAI;AACvB;AAEA,OAAO,MAAMD,eAAe,CAAC;EAC3BE,YAAY,GAAG,WAAW;EAC1BC,yBAAyB,GAAG,IAAI;AAClC"}
1
+ {"version":3,"names":["HealthConfig","logsEnabled","numberOfDaysToBackFill","connectionPolicy","androidConfig","AndroidHealthConfig","iOSConfig","IOSHealthConfig","syncOnAppStart","dataPushMode","backgroundDeliveryEnabled"],"sourceRoot":"../../src","sources":["health_config.ts"],"mappings":"AAEA,OAAO,MAAMA,YAAY,CAAC;EACxBC,WAAW,GAAG,IAAI;EAClBC,sBAAsB,GAAG,EAAE;EAC3BC,gBAAgB,GAAqB,aAAa;EAClDC,aAAa,GAAG,IAAIC,mBAAmB,CAAC,CAAC;EACzCC,SAAS,GAAG,IAAIC,eAAe,CAAC,CAAC;AACnC;AAEA,OAAO,MAAMF,mBAAmB,CAAC;EAC/BG,cAAc,GAAG,IAAI;AACvB;AAEA,OAAO,MAAMD,eAAe,CAAC;EAC3BE,YAAY,GAAG,WAAW;EAC1BC,yBAAyB,GAAG,IAAI;AAClC"}
@@ -16,9 +16,33 @@ export const VitalHealthEvents = {
16
16
  };
17
17
  export class VitalHealth {
18
18
  static status = new NativeEventEmitter(VitalHealthReactNative);
19
+ static eventEmitter = new NativeEventEmitter(NativeModules.VitalHealthReactNative);
20
+ static setEventEmitter(emitter) {
21
+ this.eventEmitter = emitter;
22
+ }
19
23
  static get canEnableBackgroundSyncNoninteractively() {
20
24
  return Platform.OS !== 'android';
21
25
  }
26
+ static get connectionStatus() {
27
+ return VitalHealthReactNative.getConnectionStatus();
28
+ }
29
+ static observeConnectionStatusChange(listener) {
30
+ var isCancelled = false;
31
+ const wrappedListener = status => {
32
+ if (isCancelled) {
33
+ return;
34
+ }
35
+ listener(status);
36
+ };
37
+ const subscription = this.eventEmitter.addListener("VitalHealthConnectionStatus", wrappedListener);
38
+ this.connectionStatus.then(wrappedListener);
39
+ return {
40
+ remove() {
41
+ isCancelled = true;
42
+ subscription.remove();
43
+ }
44
+ };
45
+ }
22
46
 
23
47
  /**
24
48
  * Whether health data sync is paused at the moment.
@@ -83,12 +107,30 @@ export class VitalHealth {
83
107
  }
84
108
  static configure(healthConfig) {
85
109
  if (Platform.OS === 'android') {
86
- return VitalHealthReactNative.configure(healthConfig.androidConfig.syncOnAppStart, healthConfig.numberOfDaysToBackFill, healthConfig.logsEnabled);
110
+ return VitalHealthReactNative.configure(healthConfig.androidConfig.syncOnAppStart, healthConfig.numberOfDaysToBackFill, healthConfig.logsEnabled, healthConfig.connectionPolicy);
87
111
  } else {
88
- return VitalHealthReactNative.configure(healthConfig.iOSConfig.backgroundDeliveryEnabled, healthConfig.numberOfDaysToBackFill, healthConfig.logsEnabled);
112
+ return VitalHealthReactNative.configure(healthConfig.iOSConfig.backgroundDeliveryEnabled, healthConfig.numberOfDaysToBackFill, healthConfig.logsEnabled, healthConfig.connectionPolicy);
89
113
  }
90
114
  }
91
115
 
116
+ /**
117
+ * Setup a HealthKit (iOS) or Health Connect (Android) connection with this device.
118
+ *
119
+ * @precondition You must configure the Health SDK to use the `explicit` Connection Policy.
120
+ */
121
+ static async connect() {
122
+ return await VitalHealthReactNative.connect();
123
+ }
124
+
125
+ /**
126
+ * Disconnect the active HealthKit (iOS) or Health Connect (Android) connection with this device.
127
+ *
128
+ * @precondition You must configure the Health SDK to use the `explicit` Connection Policy.
129
+ */
130
+ static async disconnect() {
131
+ return await VitalHealthReactNative.disconnect();
132
+ }
133
+
92
134
  /**
93
135
  * IMPORTANT: This is Android-only API.
94
136
  *
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","NativeModules","Platform","LINKING_ERROR","select","ios","default","VitalHealthReactNative","Proxy","get","Error","VitalHealthReactNativeModule","VitalHealthEvents","statusEvent","VitalHealth","status","canEnableBackgroundSyncNoninteractively","OS","pauseSynchronization","getPauseSynchronization","isBackgroundSyncEnabled","Promise","resolve","backgroundSyncMinimumInterval","autoSyncThrottle","isAvailable","configure","healthConfig","androidConfig","syncOnAppStart","numberOfDaysToBackFill","logsEnabled","iOSConfig","backgroundDeliveryEnabled","enableBackgroundSync","disableBackgroundSync","setSyncNotificationContent","content","JSON","stringify","setAutoSyncThrottle","thresholdInMilliseconds","setBackgroundSyncMinimumInterval","intervalInMilliseconds","setPauseSynchronization","paused","askForResources","resources","ask","readResources","writeResources","config","undefined","type","result","writeHealthData","resource","value","startDate","endDate","getTime","hasAskedForPermission","syncData","openPlatformHealthApp","openSyncProgressView","VitalResource","VitalWriteResource"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAI1E;AACA,cAAc,iBAAiB;AAE/B,MAAMC,aAAa,GAChB,oFAAmF,GACpFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,sBAAsB,GAAGN,aAAa,CAACM,sBAAsB,GAC/DN,aAAa,CAACM,sBAAsB,GACpC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,MAAMQ,4BAA4B,GAAGJ,sBAAsB;AAElE,OAAO,MAAMK,iBAAiB,GAAG;EAC/BC,WAAW,EAAE;AACf,CAAC;AASD,OAAO,MAAMC,WAAW,CAAC;EACvB,OAAOC,MAAM,GAAG,IAAIf,kBAAkB,CAACO,sBAAsB,CAAC;EAE9D,WAAWS,uCAAuCA,CAAA,EAAY;IAC5D,OAAOd,QAAQ,CAACe,EAAE,KAAK,SAAS;EAClC;;EAEA;AACF;AACA;EACE,WAAWC,oBAAoBA,CAAA,EAAqB;IAClD,OAAOX,sBAAsB,CAACY,uBAAuB,CAAC,CAAC;EACzD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,WAAWC,uBAAuBA,CAAA,EAAqB;IACrD,IAAIlB,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B,OAAOI,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC;IAC9B;IAEA,OAAOf,sBAAsB,CAACa,uBAAuB,CAAC,CAAC;EACzD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,WAAWG,6BAA6BA,CAAA,EAAoB;IAC1D,IAAIrB,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B,OAAOI,OAAO,CAACC,OAAO,CAAC,SAAS,CAAC;IACnC;IAEA,OAAOf,sBAAsB,CAACgB,6BAA6B,CAAC,CAAC;EAC/D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,WAAWC,gBAAgBA,CAAA,EAAoB;IAC7C,IAAItB,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B,OAAOI,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;IAC3B;IAEA,OAAOf,sBAAsB,CAACiB,gBAAgB,CAAC,CAAC;EAClD;EAEA,OAAOC,WAAWA,CAAA,EAAqB;IACrC,IAAIvB,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B,OAAOV,sBAAsB,CAACkB,WAAW,CAAC,CAAC;IAC7C,CAAC,MAAM;MACL,OAAOJ,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC;IAC9B;EACF;EAEA,OAAOI,SAASA,CAACC,YAA0B,EAAiB;IAC1D,IAAIzB,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B,OAAOV,sBAAsB,CAACmB,SAAS,CACrCC,YAAY,CAACC,aAAa,CAACC,cAAc,EACzCF,YAAY,CAACG,sBAAsB,EACnCH,YAAY,CAACI,WACf,CAAC;IACH,CAAC,MAAM;MACL,OAAOxB,sBAAsB,CAACmB,SAAS,CACrCC,YAAY,CAACK,SAAS,CAACC,yBAAyB,EAChDN,YAAY,CAACG,sBAAsB,EACnCH,YAAY,CAACI,WACf,CAAC;IACH;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaG,oBAAoBA,CAAA,EAAqB;IACpD,IAAIhC,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B;MACA;MACA,OAAO,IAAI;IACb;IAEA,OAAO,MAAMV,sBAAsB,CAAC2B,oBAAoB,CAAC,CAAC;EAC5D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,qBAAqBA,CAAA,EAAkB;IAClD,IAAIjC,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B;MACA;MACA;IACF;IAEA,OAAO,MAAMV,sBAAsB,CAAC4B,qBAAqB,CAAC,CAAC;EAC7D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,0BAA0BA,CAACC,OAAgC,EAAiB;IACvF,IAAInC,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B;MACA;MACA;IACF;IAEA,OAAO,MAAMV,sBAAsB,CAAC6B,0BAA0B,CAC5DE,IAAI,CAACC,SAAS,CAACF,OAAO,CACxB,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaG,mBAAmBA,CAACC,uBAA+B,EAAiB;IAC/E,IAAIvC,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B;IACF;IAEA,OAAO,MAAMV,sBAAsB,CAACiC,mBAAmB,CAACC,uBAAuB,CAAC;EAClF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,gCAAgCA,CAACC,sBAA8B,EAAiB;IAC3F,IAAIzC,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B;IACF;IAEA,OAAO,MAAMV,sBAAsB,CAACmC,gCAAgC,CAACC,sBAAsB,CAAC;EAC9F;;EAEA;AACF;AACA;EACE,aAAaC,uBAAuBA,CAACC,MAAe,EAAE;IACpD,OAAO,MAAMtC,sBAAsB,CAACqC,uBAAuB,CAACC,MAAM,CAAC;EACrE;EAEA,OAAOC,eAAeA,CAACC,SAA0B,EAA8B;IAC7E,OAAO,IAAI,CAACC,GAAG,CAACD,SAAS,EAAE,EAAE,CAAC;EAChC;EAEA,aAAaC,GAAGA,CACdC,aAA8B,EAC9BC,cAAoC,EACpCC,MAA6B,GAAGC,SAAS,EACb;IAC5B,IAAID,MAAM,IAAIjD,QAAQ,CAACe,EAAE,KAAKkC,MAAM,CAACE,IAAI,EAAE;MACzC,MAAM,IAAI3C,KAAK,CAAE,qBAAoByC,MAAM,CAACE,IAAK,mBAAkBnD,QAAQ,CAACe,EAAG,GAAE,CAAC;IACpF;IAEA,MAAMqC,MAAM,GAAG,MAAM/C,sBAAsB,CAACyC,GAAG,CAACC,aAAa,EAAEC,cAAc,EAAEC,MAAM,CAAC;IAEtF,IAAIjD,QAAQ,CAACe,EAAE,KAAK,SAAS,EAAE;MAC7B,OAAO,SAAS;IAClB,CAAC,MAAM;MACL,OAAOqC,MAAM;IACf;EACF;EAEA,OAAOC,eAAeA,CACpBC,QAA4B,EAC5BC,KAAa,EACbC,SAAe,EACfC,OAAa,EACE;IACf,OAAOpD,sBAAsB,CAACgD,eAAe,CAC3CC,QAAQ,EACRC,KAAK,EACLC,SAAS,CAACE,OAAO,CAAC,CAAC,EACnBD,OAAO,CAACC,OAAO,CAAC,CAClB,CAAC;EACH;EAEA,OAAOC,qBAAqBA,CAACL,QAAuB,EAAoB;IACtE,OAAOjD,sBAAsB,CAACsD,qBAAqB,CAACL,QAAQ,CAAC;EAC/D;EAEA,OAAOM,QAAQA,CAACf,SAA0B,GAAG,EAAE,EAAiB;IAC9D,OAAOxC,sBAAsB,CAACuD,QAAQ,CAACf,SAAS,CAAC;EACnD;EAEA,OAAOgB,qBAAqBA,CAAA,EAAkB;IAC5C,OAAOxD,sBAAsB,CAACwD,qBAAqB,CAAC,CAAC;EACvD;EAEA,aAAaC,oBAAoBA,CAAA,EAAkB;IACjD,IAAI9D,QAAQ,CAACe,EAAE,IAAI,KAAK,EAAE;MACxB;IACF;IAEA,OAAO,MAAMV,sBAAsB,CAACyD,oBAAoB,CAAC,CAAC;EAC5D;AACF;;AAEA;AACA,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAyEzB,WAAYC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA"}
1
+ {"version":3,"names":["NativeEventEmitter","NativeModules","Platform","LINKING_ERROR","select","ios","default","VitalHealthReactNative","Proxy","get","Error","VitalHealthReactNativeModule","VitalHealthEvents","statusEvent","VitalHealth","status","eventEmitter","setEventEmitter","emitter","canEnableBackgroundSyncNoninteractively","OS","connectionStatus","getConnectionStatus","observeConnectionStatusChange","listener","isCancelled","wrappedListener","subscription","addListener","then","remove","pauseSynchronization","getPauseSynchronization","isBackgroundSyncEnabled","Promise","resolve","backgroundSyncMinimumInterval","autoSyncThrottle","isAvailable","configure","healthConfig","androidConfig","syncOnAppStart","numberOfDaysToBackFill","logsEnabled","connectionPolicy","iOSConfig","backgroundDeliveryEnabled","connect","disconnect","enableBackgroundSync","disableBackgroundSync","setSyncNotificationContent","content","JSON","stringify","setAutoSyncThrottle","thresholdInMilliseconds","setBackgroundSyncMinimumInterval","intervalInMilliseconds","setPauseSynchronization","paused","askForResources","resources","ask","readResources","writeResources","config","undefined","type","result","writeHealthData","resource","value","startDate","endDate","getTime","hasAskedForPermission","syncData","openPlatformHealthApp","openSyncProgressView","VitalResource","VitalWriteResource"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ export type ConnectionPolicy = 'autoConnect' | 'explicit';
1
2
  export declare class HealthConfig {
2
3
  logsEnabled: boolean;
3
4
  numberOfDaysToBackFill: number;
5
+ connectionPolicy: ConnectionPolicy;
4
6
  androidConfig: AndroidHealthConfig;
5
7
  iOSConfig: IOSHealthConfig;
6
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"health_config.d.ts","sourceRoot":"","sources":["../../src/health_config.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,WAAW,UAAQ;IACnB,sBAAsB,SAAM;IAC5B,aAAa,sBAA6B;IAC1C,SAAS,kBAAyB;CACnC;AAED,qBAAa,mBAAmB;IAC9B,cAAc,UAAQ;CACvB;AAED,qBAAa,eAAe;IAC1B,YAAY,SAAe;IAC3B,yBAAyB,UAAQ;CAClC"}
1
+ {"version":3,"file":"health_config.d.ts","sourceRoot":"","sources":["../../src/health_config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,UAAU,CAAC;AAE1D,qBAAa,YAAY;IACvB,WAAW,UAAQ;IACnB,sBAAsB,SAAM;IAC5B,gBAAgB,EAAE,gBAAgB,CAAiB;IACnD,aAAa,sBAA6B;IAC1C,SAAS,kBAAyB;CACnC;AAED,qBAAa,mBAAmB;IAC9B,cAAc,UAAQ;CACvB;AAED,qBAAa,eAAe;IAC1B,YAAY,SAAe;IAC3B,yBAAyB,UAAQ;CAClC"}
@@ -1,6 +1,7 @@
1
1
  import { NativeEventEmitter } from 'react-native';
2
2
  import type { HealthConfig } from './health_config';
3
3
  import type { AskConfig } from './ask_config';
4
+ import type { Subscription } from '@tryvital/vital-core-react-native';
4
5
  export * from './health_config';
5
6
  export declare const VitalHealthReactNativeModule: any;
6
7
  export declare const VitalHealthEvents: {
@@ -12,9 +13,14 @@ export interface SyncNotificationContent {
12
13
  channelName: string;
13
14
  channelDescription: string;
14
15
  }
16
+ export type ConnectionStatus = 'autoConnect' | 'connected' | 'disconnected' | 'connectionPaused';
15
17
  export declare class VitalHealth {
16
18
  static status: NativeEventEmitter;
19
+ private static eventEmitter;
20
+ static setEventEmitter(emitter: NativeEventEmitter): void;
17
21
  static get canEnableBackgroundSyncNoninteractively(): boolean;
22
+ static get connectionStatus(): Promise<ConnectionStatus>;
23
+ static observeConnectionStatusChange(listener: (status: ConnectionStatus) => void): Subscription;
18
24
  /**
19
25
  * Whether health data sync is paused at the moment.
20
26
  */
@@ -51,6 +57,18 @@ export declare class VitalHealth {
51
57
  static get autoSyncThrottle(): Promise<number>;
52
58
  static isAvailable(): Promise<boolean>;
53
59
  static configure(healthConfig: HealthConfig): Promise<void>;
60
+ /**
61
+ * Setup a HealthKit (iOS) or Health Connect (Android) connection with this device.
62
+ *
63
+ * @precondition You must configure the Health SDK to use the `explicit` Connection Policy.
64
+ */
65
+ static connect(): Promise<void>;
66
+ /**
67
+ * Disconnect the active HealthKit (iOS) or Health Connect (Android) connection with this device.
68
+ *
69
+ * @precondition You must configure the Health SDK to use the `explicit` Connection Policy.
70
+ */
71
+ static disconnect(): Promise<void>;
54
72
  /**
55
73
  * IMPORTANT: This is Android-only API.
56
74
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA2B,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,cAAc,iBAAiB,CAAC;AAmBhC,eAAO,MAAM,4BAA4B,KAAyB,CAAC;AAEnE,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,WAAW;IACtB,MAAM,CAAC,MAAM,qBAAkD;IAE/D,MAAM,KAAK,uCAAuC,IAAI,OAAO,CAE5D;IAED;;OAEG;IACH,MAAM,KAAK,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAElD;IAED;;;;;;;;;OASG;IACH,MAAM,KAAK,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAMrD;IAED;;;;;;OAMG;IACH,MAAM,KAAK,6BAA6B,IAAI,OAAO,CAAC,MAAM,CAAC,CAM1D;IAED;;;;;;;;;OASG;IACH,MAAM,KAAK,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAM7C;IAED,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;WACU,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrD;;;;;;;;;;;;OAYG;WACU,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUnD;;;;;;;;;;;OAWG;WACU,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxF;;;;;;;;;OASG;WACU,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhF;;;;;;;;OAQG;WACU,gCAAgC,CAAC,sBAAsB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5F;;OAEG;WACU,uBAAuB,CAAC,MAAM,EAAE,OAAO;IAIpD,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;WAIjE,GAAG,CACd,aAAa,EAAE,aAAa,EAAE,EAC9B,cAAc,EAAE,kBAAkB,EAAE,EACpC,MAAM,GAAE,SAAS,GAAG,SAAqB,GACxC,OAAO,CAAC,iBAAiB,CAAC;IAc7B,MAAM,CAAC,eAAe,CACpB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,GACZ,OAAO,CAAC,IAAI,CAAC;IAShB,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAE,aAAa,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,MAAM,CAAC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;WAIhC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CAOnD;AAGD,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,oBAAoB,yBAAyB;IAC7C,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC;;OAEG;IACH,sBAAsB,aAAa;IACnC,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,IAAI,SAAS;IAEb,eAAe;IACf,UAAU,eAAe;IACzB,eAAe;IACf,cAAc,mBAAmB;IACjC,eAAe;IACf,iBAAiB,sBAAsB;IACvC,eAAe;IACf,cAAc,mBAAmB;IACjC,eAAe;IACf,YAAY,iBAAiB;IAC7B,eAAe;IACf,kBAAkB,uBAAuB;IACzC,eAAe;IACf,aAAa,kBAAkB;IAC/B,eAAe;IACf,SAAS,cAAc;IACvB,eAAe;IACf,aAAa,kBAAkB;IAC/B,eAAe;IACf,eAAe,oBAAoB;IACnC,eAAe;IACf,yBAAyB,8BAA8B;IACvD,eAAe;IACf,uBAAuB,4BAA4B;IACnD,eAAe;IACf,mBAAmB,wBAAwB;IAC3C,eAAe;IACf,sBAAsB,2BAA2B;IACjD,eAAe;IACf,YAAY,iBAAiB;IAC7B,eAAe;IACf,IAAI,SAAS;IACb,eAAe;IACf,UAAU,eAAe;IACzB,eAAe;IACf,gBAAgB,qBAAqB;IACrC,eAAe;IACf,WAAW,gBAAgB;IAC3B,eAAe;IACf,oBAAoB,yBAAyB;IAC7C,eAAe;IACf,0BAA0B,+BAA+B;CAC1D;AAED,oBAAY,kBAAkB;IAC5B,KAAK,UAAU;IACf,eAAe;IACf,QAAQ,aAAa;IACrB,eAAe;IACf,cAAc,mBAAmB;CAClC;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA2B,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGtE,cAAc,iBAAiB,CAAC;AAmBhC,eAAO,MAAM,4BAA4B,KAAyB,CAAC;AAEnE,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,WAAW,GACX,cAAc,GACd,kBAAkB,CAAC;AAEvB,qBAAa,WAAW;IACtB,MAAM,CAAC,MAAM,qBAAkD;IAC/D,OAAO,CAAC,MAAM,CAAC,YAAY,CAAgE;IAE3F,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,kBAAkB;IAIlD,MAAM,KAAK,uCAAuC,IAAI,OAAO,CAE5D;IAED,MAAM,KAAK,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAEvD;IAED,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,YAAY;IAoBhG;;OAEG;IACH,MAAM,KAAK,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAElD;IAED;;;;;;;;;OASG;IACH,MAAM,KAAK,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAMrD;IAED;;;;;;OAMG;IACH,MAAM,KAAK,6BAA6B,IAAI,OAAO,CAAC,MAAM,CAAC,CAM1D;IAED;;;;;;;;;OASG;IACH,MAAM,KAAK,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAM7C;IAED,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3D;;;;OAIG;WACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;;;OAIG;WACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;WACU,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrD;;;;;;;;;;;;OAYG;WACU,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUnD;;;;;;;;;;;OAWG;WACU,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxF;;;;;;;;;OASG;WACU,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhF;;;;;;;;OAQG;WACU,gCAAgC,CAAC,sBAAsB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5F;;OAEG;WACU,uBAAuB,CAAC,MAAM,EAAE,OAAO;IAIpD,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;WAIjE,GAAG,CACd,aAAa,EAAE,aAAa,EAAE,EAC9B,cAAc,EAAE,kBAAkB,EAAE,EACpC,MAAM,GAAE,SAAS,GAAG,SAAqB,GACxC,OAAO,CAAC,iBAAiB,CAAC;IAc7B,MAAM,CAAC,eAAe,CACpB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,GACZ,OAAO,CAAC,IAAI,CAAC;IAShB,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAE,aAAa,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,MAAM,CAAC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;WAIhC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CAOnD;AAGD,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,oBAAoB,yBAAyB;IAC7C,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC;;OAEG;IACH,sBAAsB,aAAa;IACnC,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,IAAI,SAAS;IAEb,eAAe;IACf,UAAU,eAAe;IACzB,eAAe;IACf,cAAc,mBAAmB;IACjC,eAAe;IACf,iBAAiB,sBAAsB;IACvC,eAAe;IACf,cAAc,mBAAmB;IACjC,eAAe;IACf,YAAY,iBAAiB;IAC7B,eAAe;IACf,kBAAkB,uBAAuB;IACzC,eAAe;IACf,aAAa,kBAAkB;IAC/B,eAAe;IACf,SAAS,cAAc;IACvB,eAAe;IACf,aAAa,kBAAkB;IAC/B,eAAe;IACf,eAAe,oBAAoB;IACnC,eAAe;IACf,yBAAyB,8BAA8B;IACvD,eAAe;IACf,uBAAuB,4BAA4B;IACnD,eAAe;IACf,mBAAmB,wBAAwB;IAC3C,eAAe;IACf,sBAAsB,2BAA2B;IACjD,eAAe;IACf,YAAY,iBAAiB;IAC7B,eAAe;IACf,IAAI,SAAS;IACb,eAAe;IACf,UAAU,eAAe;IACzB,eAAe;IACf,gBAAgB,qBAAqB;IACrC,eAAe;IACf,WAAW,gBAAgB;IAC3B,eAAe;IACf,oBAAoB,yBAAyB;IAC7C,eAAe;IACf,0BAA0B,+BAA+B;CAC1D;AAED,oBAAY,kBAAkB;IAC5B,KAAK,UAAU;IACf,eAAe;IACf,QAAQ,aAAa;IACrB,eAAe;IACf,cAAc,mBAAmB;CAClC;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryvital/vital-health-react-native",
3
- "version": "5.3.4",
3
+ "version": "5.4.1",
4
4
  "description": "Client to access iOS's HealthKit and Android HealthConnect",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -50,7 +50,7 @@
50
50
  "registry": "https://registry.npmjs.org/"
51
51
  },
52
52
  "dependencies": {
53
- "@tryvital/vital-core-react-native": "5.3.4"
53
+ "@tryvital/vital-core-react-native": "5.4.1"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "react": "*",
@@ -1,6 +1,9 @@
1
+ export type ConnectionPolicy = 'autoConnect' | 'explicit';
2
+
1
3
  export class HealthConfig {
2
4
  logsEnabled = true;
3
5
  numberOfDaysToBackFill = 30;
6
+ connectionPolicy: ConnectionPolicy = 'autoConnect';
4
7
  androidConfig = new AndroidHealthConfig();
5
8
  iOSConfig = new IOSHealthConfig();
6
9
  }
package/src/index.tsx CHANGED
@@ -1,6 +1,7 @@
1
1
  import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
2
2
  import type { HealthConfig } from './health_config';
3
3
  import type { AskConfig } from './ask_config';
4
+ import type { Subscription } from '@tryvital/vital-core-react-native';
4
5
 
5
6
  // Reexports
6
7
  export * from './health_config';
@@ -35,13 +36,48 @@ export interface SyncNotificationContent {
35
36
  channelDescription: string;
36
37
  }
37
38
 
39
+ export type ConnectionStatus =
40
+ | 'autoConnect'
41
+ | 'connected'
42
+ | 'disconnected'
43
+ | 'connectionPaused';
44
+
38
45
  export class VitalHealth {
39
46
  static status = new NativeEventEmitter(VitalHealthReactNative);
47
+ private static eventEmitter = new NativeEventEmitter(NativeModules.VitalHealthReactNative);
48
+
49
+ static setEventEmitter(emitter: NativeEventEmitter) {
50
+ this.eventEmitter = emitter;
51
+ }
40
52
 
41
53
  static get canEnableBackgroundSyncNoninteractively(): boolean {
42
54
  return Platform.OS !== 'android';
43
55
  }
44
56
 
57
+ static get connectionStatus(): Promise<ConnectionStatus> {
58
+ return VitalHealthReactNative.getConnectionStatus();
59
+ }
60
+
61
+ static observeConnectionStatusChange(listener: (status: ConnectionStatus) => void): Subscription {
62
+ var isCancelled = false
63
+
64
+ const wrappedListener = (status: ConnectionStatus) => {
65
+ if (isCancelled) {
66
+ return;
67
+ }
68
+ listener(status);
69
+ }
70
+ const subscription = this.eventEmitter.addListener("VitalHealthConnectionStatus", wrappedListener);
71
+ this.connectionStatus.then(wrappedListener);
72
+
73
+ return {
74
+ remove() {
75
+ isCancelled = true;
76
+ subscription.remove();
77
+ },
78
+ };
79
+ }
80
+
45
81
  /**
46
82
  * Whether health data sync is paused at the moment.
47
83
  */
@@ -113,17 +149,37 @@ export class VitalHealth {
113
149
  return VitalHealthReactNative.configure(
114
150
  healthConfig.androidConfig.syncOnAppStart,
115
151
  healthConfig.numberOfDaysToBackFill,
116
- healthConfig.logsEnabled
152
+ healthConfig.logsEnabled,
153
+ healthConfig.connectionPolicy,
117
154
  );
118
155
  } else {
119
156
  return VitalHealthReactNative.configure(
120
157
  healthConfig.iOSConfig.backgroundDeliveryEnabled,
121
158
  healthConfig.numberOfDaysToBackFill,
122
- healthConfig.logsEnabled
159
+ healthConfig.logsEnabled,
160
+ healthConfig.connectionPolicy,
123
161
  );
124
162
  }
125
163
  }
126
164
 
165
+ /**
166
+ * Setup a HealthKit (iOS) or Health Connect (Android) connection with this device.
167
+ *
168
+ * @precondition You must configure the Health SDK to use the `explicit` Connection Policy.
169
+ */
170
+ static async connect(): Promise<void> {
171
+ return await VitalHealthReactNative.connect();
172
+ }
173
+
174
+ /**
175
+ * Disconnect the active HealthKit (iOS) or Health Connect (Android) connection with this device.
176
+ *
177
+ * @precondition You must configure the Health SDK to use the `explicit` Connection Policy.
178
+ */
179
+ static async disconnect(): Promise<void> {
180
+ return await VitalHealthReactNative.disconnect();
181
+ }
182
+
127
183
  /**
128
184
  * IMPORTANT: This is Android-only API.
129
185
  *
@@ -17,7 +17,7 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency "React-Core"
20
- s.dependency "VitalHealthKit", "~> 1.6.4"
20
+ s.dependency "VitalHealthKit", "~> 1.8.2"
21
21
 
22
22
  # Don't install the dependencies when we run `pod install` in the old architecture.
23
23
  if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then