react-native-spike-sdk 4.5.23-beta.1 → 4.6.13
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/spikesdk/SpikeSdkModule.kt +53 -11
- package/ios/SpikeSdk.m +9 -1
- package/ios/SpikeSdk.swift +59 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/v3/SpikeRNConnectionAPIv3.js +43 -20
- package/lib/commonjs/v3/SpikeRNConnectionAPIv3.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/v3/SpikeRNConnectionAPIv3.js +43 -20
- package/lib/module/v3/SpikeRNConnectionAPIv3.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/v3/DataModels/BackgroundDeliveryConfig.d.ts +2 -0
- package/lib/typescript/v3/DataModels/BackgroundDeliveryConfig.d.ts.map +1 -1
- package/lib/typescript/v3/SpikeRNConnectionAPIv3.d.ts +35 -10
- package/lib/typescript/v3/SpikeRNConnectionAPIv3.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/lib/typescript/version.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +2 -0
- package/src/v3/DataModels/BackgroundDeliveryConfig.ts +2 -0
- package/src/v3/SpikeRNConnectionAPIv3.ts +86 -23
- package/src/version.ts +1 -1
package/android/build.gradle
CHANGED
|
@@ -76,7 +76,7 @@ dependencies {
|
|
|
76
76
|
//noinspection GradleDynamicVersion
|
|
77
77
|
implementation "com.facebook.react:react-android:0.71.3"
|
|
78
78
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
79
|
-
implementation 'com.spikeapi.sdk:spike-sdk:4.
|
|
79
|
+
implementation 'com.spikeapi.sdk:spike-sdk:4.6.12'
|
|
80
80
|
implementation 'androidx.core:core-ktx:1.9.0'
|
|
81
81
|
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
|
|
82
82
|
implementation 'com.google.code.gson:gson:2.10.1'
|
|
@@ -21,10 +21,10 @@ import com.spikeapi.apiv3.datamodels.RecordConfig
|
|
|
21
21
|
import com.spikeapi.apiv3.datamodels.SleepConfig
|
|
22
22
|
import com.spikeapi.apiv3.datamodels.StatisticsType
|
|
23
23
|
import com.spikeapi.apiv3.datamodels.NutritionRecord
|
|
24
|
+
import com.spikeapi.apiv3.datamodels.NutritionalField
|
|
24
25
|
import com.spikeapi.apiv3.datamodels.NutritionalAnalysisConfig
|
|
25
26
|
import com.spikeapi.apiv3.datamodels.NutritionFactsLabelRecognitionConfig
|
|
26
27
|
import com.spikeapi.apiv3.datamodels.NutritionRecordAnalysisMode
|
|
27
|
-
import com.spikeapi.apiv3.datamodels.NutritionalField
|
|
28
28
|
import com.spikeapi.apiv3.datamodels.utils.ActivityConfigUtils
|
|
29
29
|
import com.spikeapi.apiv3.datamodels.utils.SleepConfigUtils
|
|
30
30
|
import com.spikeapi.apiv3.datamodels.utils.StatisticsTypeUtils
|
|
@@ -675,6 +675,17 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
675
675
|
}
|
|
676
676
|
}
|
|
677
677
|
|
|
678
|
+
@ReactMethod
|
|
679
|
+
fun closeV3(connectionUUID: String, promise: Promise) {
|
|
680
|
+
executeV3MethodWithConnection("closeV3", connectionUUID, promise) { connection ->
|
|
681
|
+
connection.close()
|
|
682
|
+
mutex.withLock {
|
|
683
|
+
_connectionsV3.remove(connectionUUID)
|
|
684
|
+
}
|
|
685
|
+
promise.resolve(true)
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
|
|
678
689
|
/// --- Read user info ---
|
|
679
690
|
|
|
680
691
|
@ReactMethod
|
|
@@ -915,6 +926,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
915
926
|
metricTypes: ReadableArray,
|
|
916
927
|
activityConfigs: ReadableArray,
|
|
917
928
|
sleepConfigs: ReadableArray,
|
|
929
|
+
nutritionalFields: ReadableArray,
|
|
918
930
|
includeEnhancedPermissions: Boolean,
|
|
919
931
|
includeBackgroundDelivery: Boolean,
|
|
920
932
|
promise: Promise
|
|
@@ -941,12 +953,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
941
953
|
SleepConfigUtils.fromValue(it as String)
|
|
942
954
|
}.toSet()
|
|
943
955
|
|
|
956
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
957
|
+
|
|
944
958
|
val permissions = permissionManager
|
|
945
959
|
.getPermissions(
|
|
946
960
|
statisticsTypes = statTypes,
|
|
947
961
|
metricTypes = mTypes,
|
|
948
962
|
activityConfigs = aConfigs,
|
|
949
963
|
sleepConfigs = sConfigs,
|
|
964
|
+
nutritionalFields = nFields,
|
|
950
965
|
includeEnhancedPermissions = includeEnhancedPermissions,
|
|
951
966
|
includeBackgroundDelivery = includeBackgroundDelivery
|
|
952
967
|
)
|
|
@@ -1090,6 +1105,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1090
1105
|
metricTypes: ReadableArray,
|
|
1091
1106
|
activityConfigs: ReadableArray,
|
|
1092
1107
|
sleepConfigs: ReadableArray,
|
|
1108
|
+
nutritionalFields: ReadableArray,
|
|
1093
1109
|
promise: Promise
|
|
1094
1110
|
) {
|
|
1095
1111
|
executeV3MethodWithConnection("enableBackgroundDelivery", connectionUUID, promise) { connection ->
|
|
@@ -1116,11 +1132,14 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1116
1132
|
SleepConfigUtils.fromValue(it as String)
|
|
1117
1133
|
}.toSet()
|
|
1118
1134
|
|
|
1135
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
1136
|
+
|
|
1119
1137
|
connection.enableBackgroundDelivery(
|
|
1120
1138
|
statisticsTypes = statTypes,
|
|
1121
1139
|
metricTypes = mTypes,
|
|
1122
1140
|
activityConfigs = aConfigs,
|
|
1123
|
-
sleepConfigs = sConfigs
|
|
1141
|
+
sleepConfigs = sConfigs,
|
|
1142
|
+
nutritionalFields = nFields
|
|
1124
1143
|
)
|
|
1125
1144
|
|
|
1126
1145
|
promise.resolve(true)
|
|
@@ -1130,11 +1149,12 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1130
1149
|
@ReactMethod
|
|
1131
1150
|
fun backfill(
|
|
1132
1151
|
connectionUUID: String,
|
|
1133
|
-
days: String?,
|
|
1134
1152
|
statisticTypes: ReadableArray,
|
|
1135
1153
|
metricTypes: ReadableArray,
|
|
1136
1154
|
activityConfigs: ReadableArray,
|
|
1137
1155
|
sleepConfigs: ReadableArray,
|
|
1156
|
+
nutritionalFields: ReadableArray,
|
|
1157
|
+
days: String?,
|
|
1138
1158
|
promise: Promise
|
|
1139
1159
|
) {
|
|
1140
1160
|
executeV3MethodWithConnection("backfill", connectionUUID, promise) { connection ->
|
|
@@ -1154,12 +1174,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1154
1174
|
SleepConfigUtils.fromValue(it as String)
|
|
1155
1175
|
}.toSet()
|
|
1156
1176
|
|
|
1177
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
1178
|
+
|
|
1157
1179
|
connection.backfill(
|
|
1158
1180
|
days = days?.toIntOrNull(),
|
|
1159
1181
|
statisticsTypes = statTypes,
|
|
1160
1182
|
metricTypes = mTypes,
|
|
1161
1183
|
activityConfigs = aConfigs,
|
|
1162
|
-
sleepConfigs = sConfigs
|
|
1184
|
+
sleepConfigs = sConfigs,
|
|
1185
|
+
nutritionalFields = nFields
|
|
1163
1186
|
)
|
|
1164
1187
|
|
|
1165
1188
|
promise.resolve(true)
|
|
@@ -1204,6 +1227,13 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1204
1227
|
}
|
|
1205
1228
|
}
|
|
1206
1229
|
|
|
1230
|
+
private fun makeNutritionalFields(nutritionalFields: ReadableArray): Set<NutritionalField> {
|
|
1231
|
+
return nutritionalFields.toArrayList().mapNotNull { item ->
|
|
1232
|
+
val value = item as? String ?: return@mapNotNull null
|
|
1233
|
+
NutritionalField.values().find { it.value == value }
|
|
1234
|
+
}.toSet()
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1207
1237
|
/// --- Private stuff ---
|
|
1208
1238
|
|
|
1209
1239
|
// Do not use this directly, use `addConnection` and `getConnection` instead
|
|
@@ -1336,6 +1366,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1336
1366
|
metricTypes: ReadableArray,
|
|
1337
1367
|
activityConfigs: ReadableArray,
|
|
1338
1368
|
sleepConfigs: ReadableArray,
|
|
1369
|
+
nutritionalFields: ReadableArray,
|
|
1339
1370
|
promise: Promise
|
|
1340
1371
|
) {
|
|
1341
1372
|
executeV3MethodWithConnection("getSamsungHealthDataPermissions", connectionUUID, promise) { connection ->
|
|
@@ -1360,12 +1391,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1360
1391
|
SleepConfigUtils.fromValue(it as String)
|
|
1361
1392
|
}.toSet()
|
|
1362
1393
|
|
|
1394
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
1395
|
+
|
|
1363
1396
|
val permissions = permissionManager
|
|
1364
1397
|
.getPermissions(
|
|
1365
1398
|
statisticsTypes = statTypes,
|
|
1366
1399
|
metricTypes = mTypes,
|
|
1367
1400
|
activityConfigs = aConfigs,
|
|
1368
|
-
sleepConfigs = sConfigs
|
|
1401
|
+
sleepConfigs = sConfigs,
|
|
1402
|
+
nutritionalFields = nFields
|
|
1369
1403
|
)
|
|
1370
1404
|
|
|
1371
1405
|
val result = Arguments.createArray()
|
|
@@ -1384,6 +1418,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1384
1418
|
metricTypes: ReadableArray,
|
|
1385
1419
|
activityConfigs: ReadableArray,
|
|
1386
1420
|
sleepConfigs: ReadableArray,
|
|
1421
|
+
nutritionalFields: ReadableArray,
|
|
1387
1422
|
promise: Promise
|
|
1388
1423
|
) {
|
|
1389
1424
|
executeV3MethodWithConnection("requestPermissionsFromSamsungHealthData", connectionUUID, promise) { connection ->
|
|
@@ -1408,8 +1443,10 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1408
1443
|
val sConfigs = sleepConfigs.toArrayList().mapNotNull {
|
|
1409
1444
|
SleepConfigUtils.fromValue(it as String)
|
|
1410
1445
|
}.toSet()
|
|
1411
|
-
|
|
1412
|
-
|
|
1446
|
+
|
|
1447
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
1448
|
+
|
|
1449
|
+
Log.d("SpikeSdkModule", "Will ask for Samsung Health Data permissions with: statTypes=$statTypes, metricTypes=$mTypes, activityConfigs=$aConfigs, sleepConfigs=$sConfigs, nutritionalFields=$nFields")
|
|
1413
1450
|
|
|
1414
1451
|
val activity = reactApplicationContext.currentActivity
|
|
1415
1452
|
if (activity == null) {
|
|
@@ -1421,7 +1458,8 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1421
1458
|
statisticsTypes = statTypes,
|
|
1422
1459
|
metricTypes = mTypes,
|
|
1423
1460
|
activityConfigs = aConfigs,
|
|
1424
|
-
sleepConfigs = sConfigs
|
|
1461
|
+
sleepConfigs = sConfigs,
|
|
1462
|
+
nutritionalFields = nFields
|
|
1425
1463
|
)
|
|
1426
1464
|
|
|
1427
1465
|
val result = Arguments.createArray()
|
|
@@ -1437,16 +1475,17 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1437
1475
|
}
|
|
1438
1476
|
|
|
1439
1477
|
@ReactMethod
|
|
1440
|
-
fun
|
|
1478
|
+
fun requestPermissionsFromSamsungHealthDataAndBackfill(
|
|
1441
1479
|
connectionUUID: String,
|
|
1442
1480
|
statisticTypes: ReadableArray,
|
|
1443
1481
|
metricTypes: ReadableArray,
|
|
1444
1482
|
activityConfigs: ReadableArray,
|
|
1445
1483
|
sleepConfigs: ReadableArray,
|
|
1484
|
+
nutritionalFields: ReadableArray,
|
|
1446
1485
|
days: String?,
|
|
1447
1486
|
promise: Promise
|
|
1448
1487
|
) {
|
|
1449
|
-
executeV3MethodWithConnection("
|
|
1488
|
+
executeV3MethodWithConnection("requestPermissionsFromSamsungHealthDataAndBackfill", connectionUUID, promise) { connection ->
|
|
1450
1489
|
val activity = reactApplicationContext.currentActivity
|
|
1451
1490
|
if (activity == null) {
|
|
1452
1491
|
throw SpikeExceptions.SpikeException("Activity is required to request Samsung Health Data permissions and backfill")
|
|
@@ -1468,12 +1507,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1468
1507
|
SleepConfigUtils.fromValue(it as String)
|
|
1469
1508
|
}.toSet()
|
|
1470
1509
|
|
|
1471
|
-
|
|
1510
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
1511
|
+
|
|
1512
|
+
connection.requestPermissionsFromSamsungHealthDataAndBackfill(
|
|
1472
1513
|
activity = activity,
|
|
1473
1514
|
statisticsTypes = statTypes,
|
|
1474
1515
|
metricTypes = mTypes,
|
|
1475
1516
|
activityConfigs = aConfigs,
|
|
1476
1517
|
sleepConfigs = sConfigs,
|
|
1518
|
+
nutritionalFields = nFields,
|
|
1477
1519
|
backfillDays = days?.toIntOrNull()
|
|
1478
1520
|
)
|
|
1479
1521
|
|
package/ios/SpikeSdk.m
CHANGED
|
@@ -96,6 +96,10 @@ RCT_EXTERN_METHOD(createConnectionAPIv3: (NSString)uuid
|
|
|
96
96
|
withResolver: (RCTPromiseResolveBlock)resolve
|
|
97
97
|
withRejecter: (RCTPromiseRejectBlock)reject)
|
|
98
98
|
|
|
99
|
+
RCT_EXTERN_METHOD(closeV3: (NSString)connectionUUID
|
|
100
|
+
withResolver: (RCTPromiseResolveBlock)resolve
|
|
101
|
+
withRejecter: (RCTPromiseRejectBlock)reject)
|
|
102
|
+
|
|
99
103
|
RCT_EXTERN_METHOD(createConnectionAPIv3Legacy: (NSString)uuid
|
|
100
104
|
withAppId: (NSString)appId
|
|
101
105
|
withAuthToken: (NSString)authToken
|
|
@@ -119,6 +123,7 @@ RCT_EXTERN_METHOD(requestPermissionsFromHealthKit: (NSString)connectionUUID
|
|
|
119
123
|
metrics: (NSArray<NSString>)metrics
|
|
120
124
|
activityConfigs: (NSArray<NSString>)activityConfigs
|
|
121
125
|
sleepConfigs: (NSArray<NSString>)sleepConfigs
|
|
126
|
+
nutritionalFields: (NSArray<NSString>)nutritionalFields
|
|
122
127
|
withResolver: (RCTPromiseResolveBlock)resolve
|
|
123
128
|
withRejecter: (RCTPromiseRejectBlock)reject)
|
|
124
129
|
|
|
@@ -127,6 +132,7 @@ RCT_EXTERN_METHOD(requestPermissionsFromHealthKitAndBackfill: (NSString)connecti
|
|
|
127
132
|
metrics: (NSArray<NSString>)metrics
|
|
128
133
|
activityConfigs: (NSArray<NSString>)activityConfigs
|
|
129
134
|
sleepConfigs: (NSArray<NSString>)sleepConfigs
|
|
135
|
+
nutritionalFields: (NSArray<NSString>)nutritionalFields
|
|
130
136
|
days: (NSString)days
|
|
131
137
|
withResolver: (RCTPromiseResolveBlock)resolve
|
|
132
138
|
withRejecter: (RCTPromiseRejectBlock)reject)
|
|
@@ -187,15 +193,17 @@ RCT_EXTERN_METHOD(enableBackgroundDeliveryV3: (NSString)connectionUUID
|
|
|
187
193
|
metrics: (NSArray<NSString>)metrics
|
|
188
194
|
activityConfigs: (NSArray<NSString>)activityConfigs
|
|
189
195
|
sleepConfigs: (NSArray<NSString>)sleepConfigs
|
|
196
|
+
nutritionalFields: (NSArray<NSString>)nutritionalFields
|
|
190
197
|
withResolver: (RCTPromiseResolveBlock)resolve
|
|
191
198
|
withRejecter: (RCTPromiseRejectBlock)reject)
|
|
192
199
|
|
|
193
200
|
RCT_EXTERN_METHOD(backfill: (NSString)connectionUUID
|
|
194
|
-
days: (NSString)days
|
|
195
201
|
withStatistics: (NSArray<NSString>)statistics
|
|
196
202
|
metrics: (NSArray<NSString>)metrics
|
|
197
203
|
activityConfigs: (NSArray<NSString>)activityConfigs
|
|
198
204
|
sleepConfigs: (NSArray<NSString>)sleepConfigs
|
|
205
|
+
nutritionalFields: (NSArray<NSString>)nutritionalFields
|
|
206
|
+
days: (NSString)days
|
|
199
207
|
withResolver: (RCTPromiseResolveBlock)resolve
|
|
200
208
|
withRejecter: (RCTPromiseRejectBlock)reject)
|
|
201
209
|
|
package/ios/SpikeSdk.swift
CHANGED
|
@@ -476,6 +476,12 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
476
476
|
_connectionsV3[uuid]
|
|
477
477
|
}
|
|
478
478
|
}
|
|
479
|
+
|
|
480
|
+
private func removeConnectionV3(withUUID uuid: String) {
|
|
481
|
+
queue.sync {
|
|
482
|
+
_connectionsV3.removeValue(forKey: uuid)
|
|
483
|
+
}
|
|
484
|
+
}
|
|
479
485
|
|
|
480
486
|
// SpikeSDK level
|
|
481
487
|
|
|
@@ -505,6 +511,29 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
505
511
|
}
|
|
506
512
|
}
|
|
507
513
|
}
|
|
514
|
+
|
|
515
|
+
@objc(closeV3:
|
|
516
|
+
withResolver:
|
|
517
|
+
withRejecter:)
|
|
518
|
+
func closeV3(
|
|
519
|
+
connectionUUID: String,
|
|
520
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
521
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
522
|
+
) {
|
|
523
|
+
Task {
|
|
524
|
+
do {
|
|
525
|
+
guard let connection = getConnectionV3(withUUID: connectionUUID) else {
|
|
526
|
+
spikeReject(with: SpikeConnectionNotFoundException(), reject: reject)
|
|
527
|
+
return
|
|
528
|
+
}
|
|
529
|
+
try await connection.close()
|
|
530
|
+
removeConnectionV3(withUUID: connectionUUID)
|
|
531
|
+
resolve(Void())
|
|
532
|
+
} catch let error {
|
|
533
|
+
spikeReject(with: error, reject: reject)
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
508
537
|
|
|
509
538
|
@objc(createConnectionAPIv3Legacy:
|
|
510
539
|
withAppId:
|
|
@@ -567,6 +596,7 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
567
596
|
metrics:
|
|
568
597
|
activityConfigs:
|
|
569
598
|
sleepConfigs:
|
|
599
|
+
nutritionalFields:
|
|
570
600
|
withResolver:
|
|
571
601
|
withRejecter:)
|
|
572
602
|
func requestPermissionsFromHealthKit(
|
|
@@ -575,6 +605,7 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
575
605
|
forMetrics metrics: [String],
|
|
576
606
|
forActivityConfigs activityConfigs: [String],
|
|
577
607
|
forSleepConfigs sleepConfigs: [String],
|
|
608
|
+
nutritionalFields: [String],
|
|
578
609
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
579
610
|
reject: @escaping RCTPromiseRejectBlock
|
|
580
611
|
) {
|
|
@@ -596,12 +627,16 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
596
627
|
let sleepConfigsObjects = sleepConfigs.compactMap {
|
|
597
628
|
try? makeSleepConfig(fromString: $0)
|
|
598
629
|
}
|
|
630
|
+
let nutritionFieldsObjects = nutritionalFields.compactMap {
|
|
631
|
+
NutritionalField(rawValue: $0)
|
|
632
|
+
}
|
|
599
633
|
|
|
600
634
|
try await connection.requestPermissionsFromHealthKit(
|
|
601
635
|
forStatistics: stats,
|
|
602
636
|
forMetrics: metricsObjects,
|
|
603
637
|
forActivities: activityConfigsObjects,
|
|
604
|
-
forSleep: sleepConfigsObjects
|
|
638
|
+
forSleep: sleepConfigsObjects,
|
|
639
|
+
forNutrition: nutritionFieldsObjects
|
|
605
640
|
)
|
|
606
641
|
|
|
607
642
|
resolve(Void())
|
|
@@ -616,6 +651,7 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
616
651
|
metrics:
|
|
617
652
|
activityConfigs:
|
|
618
653
|
sleepConfigs:
|
|
654
|
+
nutritionalFields:
|
|
619
655
|
days:
|
|
620
656
|
withResolver:
|
|
621
657
|
withRejecter:)
|
|
@@ -625,6 +661,7 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
625
661
|
metrics: [String],
|
|
626
662
|
activityConfigs: [String],
|
|
627
663
|
sleepConfigs: [String],
|
|
664
|
+
nutritionalFields: [String],
|
|
628
665
|
days: String?,
|
|
629
666
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
630
667
|
reject: @escaping RCTPromiseRejectBlock
|
|
@@ -647,6 +684,9 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
647
684
|
let sleepConfigsObjects = sleepConfigs.compactMap {
|
|
648
685
|
try? makeSleepConfig(fromString: $0)
|
|
649
686
|
}
|
|
687
|
+
let nutritionFieldsObjects = nutritionalFields.compactMap {
|
|
688
|
+
NutritionalField(rawValue: $0)
|
|
689
|
+
}
|
|
650
690
|
|
|
651
691
|
let daysValue: Int? = days != nil ? Int(days!) : nil
|
|
652
692
|
try await connection.requestPermissionsFromHealthKitAndBackfill(
|
|
@@ -654,6 +694,7 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
654
694
|
forMetrics: metricsObjects,
|
|
655
695
|
forActivities: activityConfigsObjects,
|
|
656
696
|
forSleep: sleepConfigsObjects,
|
|
697
|
+
forNutrition: nutritionFieldsObjects,
|
|
657
698
|
backfillDays: daysValue
|
|
658
699
|
)
|
|
659
700
|
|
|
@@ -916,6 +957,7 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
916
957
|
metrics:
|
|
917
958
|
activityConfigs:
|
|
918
959
|
sleepConfigs:
|
|
960
|
+
nutritionalFields:
|
|
919
961
|
withResolver:
|
|
920
962
|
withRejecter:)
|
|
921
963
|
func enableBackgroundDeliveryV3(
|
|
@@ -924,6 +966,7 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
924
966
|
metrics: [String],
|
|
925
967
|
activityConfigs: [String],
|
|
926
968
|
sleepConfigs: [String],
|
|
969
|
+
nutritionalFields: [String],
|
|
927
970
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
928
971
|
reject: @escaping RCTPromiseRejectBlock
|
|
929
972
|
) {
|
|
@@ -946,12 +989,16 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
946
989
|
let sleepConfigsObjects = sleepConfigs.compactMap {
|
|
947
990
|
try? makeSleepConfig(fromString: $0)
|
|
948
991
|
}
|
|
992
|
+
let nutritionFieldsObjects = nutritionalFields.compactMap {
|
|
993
|
+
NutritionalField(rawValue: $0)
|
|
994
|
+
}
|
|
949
995
|
|
|
950
996
|
try await connection.enableBackgroundDelivery(
|
|
951
997
|
forStatistics: stats,
|
|
952
998
|
forMetrics: metricsObjects,
|
|
953
999
|
forActivities: activityConfigsObjects,
|
|
954
|
-
forSleep: sleepConfigsObjects
|
|
1000
|
+
forSleep: sleepConfigsObjects,
|
|
1001
|
+
forNutrition: nutritionFieldsObjects
|
|
955
1002
|
)
|
|
956
1003
|
|
|
957
1004
|
resolve(true)
|
|
@@ -962,20 +1009,22 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
962
1009
|
}
|
|
963
1010
|
|
|
964
1011
|
@objc(backfill:
|
|
965
|
-
days:
|
|
966
1012
|
withStatistics:
|
|
967
1013
|
metrics:
|
|
968
1014
|
activityConfigs:
|
|
969
1015
|
sleepConfigs:
|
|
1016
|
+
nutritionalFields:
|
|
1017
|
+
days:
|
|
970
1018
|
withResolver:
|
|
971
1019
|
withRejecter:)
|
|
972
1020
|
func backfill(
|
|
973
1021
|
connectionUUID: String,
|
|
974
|
-
days: String?,
|
|
975
1022
|
withStatistics statistics: [String],
|
|
976
1023
|
metrics: [String],
|
|
977
1024
|
activityConfigs: [String],
|
|
978
1025
|
sleepConfigs: [String],
|
|
1026
|
+
nutritionalFields: [String],
|
|
1027
|
+
days: String?,
|
|
979
1028
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
980
1029
|
reject: @escaping RCTPromiseRejectBlock
|
|
981
1030
|
) {
|
|
@@ -997,14 +1046,18 @@ class SpikeSdk: RCTEventEmitter {
|
|
|
997
1046
|
let sleepConfigsObjects = sleepConfigs.compactMap {
|
|
998
1047
|
try? makeSleepConfig(fromString: $0)
|
|
999
1048
|
}
|
|
1049
|
+
let nutritionFieldsObjects = nutritionalFields.compactMap {
|
|
1050
|
+
NutritionalField(rawValue: $0)
|
|
1051
|
+
}
|
|
1000
1052
|
|
|
1001
1053
|
let daysValue: Int? = days != nil ? Int(days!) : nil
|
|
1002
1054
|
try await connection.backfill(
|
|
1003
|
-
days: daysValue,
|
|
1004
1055
|
forStatistics: stats,
|
|
1005
1056
|
forMetrics: metricsObjects,
|
|
1006
1057
|
forActivities: activityConfigsObjects,
|
|
1007
|
-
forSleep: sleepConfigsObjects
|
|
1058
|
+
forSleep: sleepConfigsObjects,
|
|
1059
|
+
forNutrition: nutritionFieldsObjects,
|
|
1060
|
+
days: daysValue
|
|
1008
1061
|
)
|
|
1009
1062
|
|
|
1010
1063
|
resolve(true)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_SpikeDataTypes","require","_Spike","_SpikeConnection","_SpikeException","_SpikeRNConnectionAPIv","_ActivityTag","_ActivityType","_ActivityCategory","_InputMethod","_MetricType","_Provider","_ProviderSource","_StatisticsType","_StatisticsInterval","_Unit","_StatisticsFilter","_HealthConnectAvailabilityStatus","_HealthConnectFeature","_SamsungHealthDataAvailabilityStatus","_ActivityAdditionalData","_ActivityConfig","_SleepConfig","_RecordConfig","_LogLevel","_NutritionRecordStatus","_NutritionRecordAnalysisMode","_NutritionalField","_NutritionalUnit","_NutritionRecordUtils","_NutritionRecordIngredientUtils","_default","exports","default","createConnection","getBackgroundConnections","ensurePermissionsAreGranted","isPackageInstalled","isHealthDataAvailable","createConnectionAPIv3","createConnectionAPIv3Legacy","setLogCallback"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAYA,IAAAE,gBAAA,GAAAF,OAAA;AAIA,IAAAG,eAAA,GAAAH,OAAA;AAuEA,IAAAI,sBAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,iBAAA,GAAAP,OAAA;AACA,IAAAQ,YAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,SAAA,GAAAV,OAAA;AACA,IAAAW,eAAA,GAAAX,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AACA,IAAAa,mBAAA,GAAAb,OAAA;AACA,IAAAc,KAAA,GAAAd,OAAA;AACA,IAAAe,iBAAA,GAAAf,OAAA;AACA,IAAAgB,gCAAA,GAAAhB,OAAA;AACA,IAAAiB,qBAAA,GAAAjB,OAAA;AACA,IAAAkB,oCAAA,GAAAlB,OAAA;AACA,IAAAmB,uBAAA,GAAAnB,OAAA;AACA,IAAAoB,eAAA,GAAApB,OAAA;AAIA,IAAAqB,YAAA,GAAArB,OAAA;AACA,IAAAsB,aAAA,GAAAtB,OAAA;
|
|
1
|
+
{"version":3,"names":["_SpikeDataTypes","require","_Spike","_SpikeConnection","_SpikeException","_SpikeRNConnectionAPIv","_ActivityTag","_ActivityType","_ActivityCategory","_InputMethod","_MetricType","_Provider","_ProviderSource","_StatisticsType","_StatisticsInterval","_Unit","_StatisticsFilter","_HealthConnectAvailabilityStatus","_HealthConnectFeature","_SamsungHealthDataAvailabilityStatus","_ActivityAdditionalData","_ActivityConfig","_SleepConfig","_RecordConfig","_LogLevel","_NutritionRecordStatus","_NutritionRecordAnalysisMode","_NutritionalField","_NutritionalUnit","_NutritionRecordUtils","_NutritionRecordIngredientUtils","_default","exports","default","createConnection","getBackgroundConnections","ensurePermissionsAreGranted","isPackageInstalled","isHealthDataAvailable","createConnectionAPIv3","createConnectionAPIv3Legacy","setLogCallback"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAYA,IAAAE,gBAAA,GAAAF,OAAA;AAIA,IAAAG,eAAA,GAAAH,OAAA;AAuEA,IAAAI,sBAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,iBAAA,GAAAP,OAAA;AACA,IAAAQ,YAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,SAAA,GAAAV,OAAA;AACA,IAAAW,eAAA,GAAAX,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AACA,IAAAa,mBAAA,GAAAb,OAAA;AACA,IAAAc,KAAA,GAAAd,OAAA;AACA,IAAAe,iBAAA,GAAAf,OAAA;AACA,IAAAgB,gCAAA,GAAAhB,OAAA;AACA,IAAAiB,qBAAA,GAAAjB,OAAA;AACA,IAAAkB,oCAAA,GAAAlB,OAAA;AACA,IAAAmB,uBAAA,GAAAnB,OAAA;AACA,IAAAoB,eAAA,GAAApB,OAAA;AAIA,IAAAqB,YAAA,GAAArB,OAAA;AACA,IAAAsB,aAAA,GAAAtB,OAAA;AASA,IAAAuB,SAAA,GAAAvB,OAAA;AAIA,IAAAwB,sBAAA,GAAAxB,OAAA;AACA,IAAAyB,4BAAA,GAAAzB,OAAA;AAEA,IAAA0B,iBAAA,GAAA1B,OAAA;AACA,IAAA2B,gBAAA,GAAA3B,OAAA;AAGA,IAAA4B,qBAAA,GAAA5B,OAAA;AAIA,IAAA6B,+BAAA,GAAA7B,OAAA;AAGmD,IAAA8B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA/FpC;EACbC,gBAAgB,EAAhBA,uBAAgB;EAChBC,wBAAwB,EAAxBA,+BAAwB;EACxBC,2BAA2B,EAA3BA,kCAA2B;EAC3BC,kBAAkB,EAAlBA,yBAAkB;EAClBC,qBAAqB,EAArBA,4BAAqB;EACrB;EACAC,qBAAqB,EAArBA,4BAAqB;EACrBC,2BAA2B,EAA3BA,kCAA2B;EAC3BC,cAAc,EAAdA;AACF,CAAC,EAoCD","ignoreList":[]}
|
|
@@ -22,6 +22,14 @@ class SpikeRNConnectionAPIv3 {
|
|
|
22
22
|
this.connectionUUID = connectionUUID;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Closes the SDK connection and releases the native connection handle.
|
|
27
|
+
*/
|
|
28
|
+
async close() {
|
|
29
|
+
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
30
|
+
await _SpikeSdk.SpikeSdk.closeV3(this.connectionUUID);
|
|
31
|
+
}
|
|
32
|
+
|
|
25
33
|
/**
|
|
26
34
|
* Get information about current user, the most important of which is the list of provider
|
|
27
35
|
* integrations.
|
|
@@ -164,16 +172,17 @@ class SpikeRNConnectionAPIv3 {
|
|
|
164
172
|
metricTypes = [],
|
|
165
173
|
activityConfigs = [],
|
|
166
174
|
sleepConfigs = [],
|
|
175
|
+
nutritionalFields = [],
|
|
167
176
|
includeEnhancedPermissions = false,
|
|
168
177
|
includeBackgroundDelivery = false
|
|
169
178
|
}) {
|
|
170
179
|
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
171
180
|
if (_reactNative.Platform.OS == 'ios') {
|
|
172
|
-
await _SpikeSdk.SpikeSdk.requestPermissionsFromHealthKit(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)));
|
|
181
|
+
await _SpikeSdk.SpikeSdk.requestPermissionsFromHealthKit(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields);
|
|
173
182
|
}
|
|
174
183
|
if (_reactNative.Platform.OS == 'android') {
|
|
175
184
|
await this.enableHealthConnectIntegration();
|
|
176
|
-
const permissions = await _SpikeSdk.SpikeSdk.getHealthConnectPermissions(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), includeEnhancedPermissions, includeBackgroundDelivery);
|
|
185
|
+
const permissions = await _SpikeSdk.SpikeSdk.getHealthConnectPermissions(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields, includeEnhancedPermissions, includeBackgroundDelivery);
|
|
177
186
|
const result = await _SpikeSdk.SpikeSdk.requestPermissionsFromHealthConnect(this.connectionUUID, permissions);
|
|
178
187
|
console.log("requestPermissionsFromHealthConnect result: " + result);
|
|
179
188
|
}
|
|
@@ -207,15 +216,16 @@ class SpikeRNConnectionAPIv3 {
|
|
|
207
216
|
statisticTypes = [],
|
|
208
217
|
metricTypes = [],
|
|
209
218
|
activityConfigs = [],
|
|
210
|
-
sleepConfigs = []
|
|
219
|
+
sleepConfigs = [],
|
|
220
|
+
nutritionalFields = []
|
|
211
221
|
}) {
|
|
212
222
|
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
213
223
|
if (_reactNative.Platform.OS == 'ios') {
|
|
214
224
|
// V3 has to be added because "enableBackgroundDelivery"
|
|
215
225
|
// method from old sdk is still present.
|
|
216
|
-
await _SpikeSdk.SpikeSdk.enableBackgroundDeliveryV3(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)));
|
|
226
|
+
await _SpikeSdk.SpikeSdk.enableBackgroundDeliveryV3(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields);
|
|
217
227
|
} else {
|
|
218
|
-
await _SpikeSdk.SpikeSdk.enableBackgroundDelivery(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)));
|
|
228
|
+
await _SpikeSdk.SpikeSdk.enableBackgroundDelivery(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields);
|
|
219
229
|
}
|
|
220
230
|
}
|
|
221
231
|
|
|
@@ -236,10 +246,15 @@ class SpikeRNConnectionAPIv3 {
|
|
|
236
246
|
statisticTypes = [],
|
|
237
247
|
metricTypes = [],
|
|
238
248
|
activityConfigs = [],
|
|
239
|
-
sleepConfigs = []
|
|
249
|
+
sleepConfigs = [],
|
|
250
|
+
nutritionalFields = []
|
|
240
251
|
}) {
|
|
241
252
|
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
242
|
-
|
|
253
|
+
if (_reactNative.Platform.OS == 'ios') {
|
|
254
|
+
await _SpikeSdk.SpikeSdk.backfill(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields, days !== undefined ? String(days) : null);
|
|
255
|
+
} else {
|
|
256
|
+
await _SpikeSdk.SpikeSdk.backfill(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields, days !== undefined ? String(days) : null);
|
|
257
|
+
}
|
|
243
258
|
}
|
|
244
259
|
|
|
245
260
|
/**
|
|
@@ -310,11 +325,12 @@ class SpikeRNConnectionAPIv3 {
|
|
|
310
325
|
statisticTypes = [],
|
|
311
326
|
metricTypes = [],
|
|
312
327
|
activityConfigs = [],
|
|
313
|
-
sleepConfigs = []
|
|
328
|
+
sleepConfigs = [],
|
|
329
|
+
nutritionalFields = []
|
|
314
330
|
}) {
|
|
315
331
|
if (_reactNative.Platform.OS !== 'ios') return;
|
|
316
332
|
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
317
|
-
await _SpikeSdk.SpikeSdk.requestPermissionsFromHealthKitAndBackfill(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), days !== undefined ? String(days) : null);
|
|
333
|
+
await _SpikeSdk.SpikeSdk.requestPermissionsFromHealthKitAndBackfill(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields, days !== undefined ? String(days) : null);
|
|
318
334
|
}
|
|
319
335
|
|
|
320
336
|
// ------------------------- Android specific Health Connect permissions -------------------------
|
|
@@ -425,12 +441,13 @@ class SpikeRNConnectionAPIv3 {
|
|
|
425
441
|
metricTypes = [],
|
|
426
442
|
activityConfigs = [],
|
|
427
443
|
sleepConfigs = [],
|
|
444
|
+
nutritionalFields = [],
|
|
428
445
|
includeEnhancedPermissions = false,
|
|
429
446
|
includeBackgroundDelivery = false
|
|
430
447
|
}) {
|
|
431
448
|
if (_reactNative.Platform.OS !== 'android') return [];
|
|
432
449
|
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
433
|
-
return await _SpikeSdk.SpikeSdk.getHealthConnectPermissions(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), includeEnhancedPermissions, includeBackgroundDelivery);
|
|
450
|
+
return await _SpikeSdk.SpikeSdk.getHealthConnectPermissions(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields, includeEnhancedPermissions, includeBackgroundDelivery);
|
|
434
451
|
}
|
|
435
452
|
|
|
436
453
|
/**
|
|
@@ -466,7 +483,7 @@ class SpikeRNConnectionAPIv3 {
|
|
|
466
483
|
* Enables Health Connect integration, requests permissions for the given categories, then starts a backfill.
|
|
467
484
|
* Data for today and yesterday is pushed before this method resolves; older days continue in the background.
|
|
468
485
|
*
|
|
469
|
-
* This mirrors the native {@link
|
|
486
|
+
* This mirrors the native {@link requestPermissionsFromSamsungHealthDataAndBackfill} flow: enable integration,
|
|
470
487
|
* request permissions, then run backfill (implemented by composing existing Health Connect APIs).
|
|
471
488
|
*
|
|
472
489
|
* For manual control, use {@link enableHealthConnectIntegration}, {@link getHealthConnectPermissions},
|
|
@@ -475,12 +492,13 @@ class SpikeRNConnectionAPIv3 {
|
|
|
475
492
|
* @category Android Health Connect
|
|
476
493
|
* @category Backfill
|
|
477
494
|
*/
|
|
478
|
-
async
|
|
495
|
+
async requestPermissionsFromHealthConnectAndBackfill({
|
|
479
496
|
days = undefined,
|
|
480
497
|
statisticTypes = [],
|
|
481
498
|
metricTypes = [],
|
|
482
499
|
activityConfigs = [],
|
|
483
500
|
sleepConfigs = [],
|
|
501
|
+
nutritionalFields = [],
|
|
484
502
|
includeEnhancedPermissions = false,
|
|
485
503
|
includeBackgroundDelivery = false
|
|
486
504
|
}) {
|
|
@@ -492,6 +510,7 @@ class SpikeRNConnectionAPIv3 {
|
|
|
492
510
|
metricTypes,
|
|
493
511
|
activityConfigs,
|
|
494
512
|
sleepConfigs,
|
|
513
|
+
nutritionalFields,
|
|
495
514
|
includeEnhancedPermissions,
|
|
496
515
|
includeBackgroundDelivery
|
|
497
516
|
});
|
|
@@ -503,7 +522,8 @@ class SpikeRNConnectionAPIv3 {
|
|
|
503
522
|
statisticTypes,
|
|
504
523
|
metricTypes,
|
|
505
524
|
activityConfigs,
|
|
506
|
-
sleepConfigs
|
|
525
|
+
sleepConfigs,
|
|
526
|
+
nutritionalFields
|
|
507
527
|
});
|
|
508
528
|
}
|
|
509
529
|
|
|
@@ -593,11 +613,12 @@ class SpikeRNConnectionAPIv3 {
|
|
|
593
613
|
statisticTypes = [],
|
|
594
614
|
metricTypes = [],
|
|
595
615
|
activityConfigs = [],
|
|
596
|
-
sleepConfigs = []
|
|
616
|
+
sleepConfigs = [],
|
|
617
|
+
nutritionalFields = []
|
|
597
618
|
}) {
|
|
598
619
|
if (_reactNative.Platform.OS !== 'android') return [];
|
|
599
620
|
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
600
|
-
return await _SpikeSdk.SpikeSdk.getSamsungHealthDataPermissions(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)));
|
|
621
|
+
return await _SpikeSdk.SpikeSdk.getSamsungHealthDataPermissions(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields);
|
|
601
622
|
}
|
|
602
623
|
|
|
603
624
|
/**
|
|
@@ -613,11 +634,12 @@ class SpikeRNConnectionAPIv3 {
|
|
|
613
634
|
statisticTypes = [],
|
|
614
635
|
metricTypes = [],
|
|
615
636
|
activityConfigs = [],
|
|
616
|
-
sleepConfigs = []
|
|
637
|
+
sleepConfigs = [],
|
|
638
|
+
nutritionalFields = []
|
|
617
639
|
}) {
|
|
618
640
|
if (_reactNative.Platform.OS !== 'android') return [];
|
|
619
641
|
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
620
|
-
return await _SpikeSdk.SpikeSdk.requestPermissionsFromSamsungHealthData(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)));
|
|
642
|
+
return await _SpikeSdk.SpikeSdk.requestPermissionsFromSamsungHealthData(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields);
|
|
621
643
|
}
|
|
622
644
|
|
|
623
645
|
/**
|
|
@@ -629,16 +651,17 @@ class SpikeRNConnectionAPIv3 {
|
|
|
629
651
|
* @category Samsung Health Data
|
|
630
652
|
* @category Backfill
|
|
631
653
|
*/
|
|
632
|
-
async
|
|
654
|
+
async requestPermissionsFromSamsungHealthDataAndBackfill({
|
|
633
655
|
days = undefined,
|
|
634
656
|
statisticTypes = [],
|
|
635
657
|
metricTypes = [],
|
|
636
658
|
activityConfigs = [],
|
|
637
|
-
sleepConfigs = []
|
|
659
|
+
sleepConfigs = [],
|
|
660
|
+
nutritionalFields = []
|
|
638
661
|
}) {
|
|
639
662
|
if (_reactNative.Platform.OS !== 'android') return;
|
|
640
663
|
if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
|
|
641
|
-
await _SpikeSdk.SpikeSdk.
|
|
664
|
+
await _SpikeSdk.SpikeSdk.requestPermissionsFromSamsungHealthDataAndBackfill(this.connectionUUID, statisticTypes, metricTypes, activityConfigs.map(object => JSON.stringify(object)), sleepConfigs.map(object => JSON.stringify(object)), nutritionalFields, days !== undefined ? String(days) : null);
|
|
642
665
|
}
|
|
643
666
|
|
|
644
667
|
// ------------------------- Nutrition AI -------------------------
|