@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.
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/vitalhealthreactnative/VitalHealthEvent.kt +3 -1
- package/android/src/main/java/com/vitalhealthreactnative/VitalHealthReactNativeModule.kt +36 -1
- package/ios/VitalHealthReactNative.m +10 -0
- package/ios/VitalHealthReactNative.swift +59 -3
- package/lib/commonjs/health_config.js +1 -0
- package/lib/commonjs/health_config.js.map +1 -1
- package/lib/commonjs/index.js +44 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/health_config.js +1 -0
- package/lib/module/health_config.js.map +1 -1
- package/lib/module/index.js +44 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/health_config.d.ts +2 -0
- package/lib/typescript/health_config.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +18 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/health_config.ts +3 -0
- package/src/index.tsx +58 -2
- package/vital-health-react-native.podspec +1 -1
package/android/build.gradle
CHANGED
|
@@ -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":";;;;;;
|
|
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"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -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":";;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HealthConfig","logsEnabled","numberOfDaysToBackFill","androidConfig","AndroidHealthConfig","iOSConfig","IOSHealthConfig","syncOnAppStart","dataPushMode","backgroundDeliveryEnabled"],"sourceRoot":"../../src","sources":["health_config.ts"],"mappings":"
|
|
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"}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
*
|
package/lib/module/index.js.map
CHANGED
|
@@ -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;
|
|
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 +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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tryvital/vital-health-react-native",
|
|
3
|
-
"version": "5.
|
|
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.
|
|
53
|
+
"@tryvital/vital-core-react-native": "5.4.1"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"react": "*",
|
package/src/health_config.ts
CHANGED
|
@@ -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.
|
|
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
|