react-native-spike-sdk 4.3.173 → 4.3.183

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.
Files changed (98) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/java/com/spikesdk/SpikeSdkModule.kt +129 -1
  3. package/ios/SpikeSdk.m +38 -0
  4. package/ios/SpikeSdk.swift +237 -0
  5. package/lib/commonjs/index.js +28 -0
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/v3/DataModels/ActivityTag.js +0 -1
  8. package/lib/commonjs/v3/DataModels/ActivityTag.js.map +1 -1
  9. package/lib/commonjs/v3/DataModels/NutritionRecord.js +6 -0
  10. package/lib/commonjs/v3/DataModels/NutritionRecord.js.map +1 -0
  11. package/lib/commonjs/v3/DataModels/NutritionRecordAnalysisInput.js +6 -0
  12. package/lib/commonjs/v3/DataModels/NutritionRecordAnalysisInput.js.map +1 -0
  13. package/lib/commonjs/v3/DataModels/NutritionRecordAnalysisMode.js +14 -0
  14. package/lib/commonjs/v3/DataModels/NutritionRecordAnalysisMode.js.map +1 -0
  15. package/lib/commonjs/v3/DataModels/NutritionRecordIngredient.js +6 -0
  16. package/lib/commonjs/v3/DataModels/NutritionRecordIngredient.js.map +1 -0
  17. package/lib/commonjs/v3/DataModels/NutritionRecordStatus.js +17 -0
  18. package/lib/commonjs/v3/DataModels/NutritionRecordStatus.js.map +1 -0
  19. package/lib/commonjs/v3/DataModels/NutritionalAnalysisConfig.js +6 -0
  20. package/lib/commonjs/v3/DataModels/NutritionalAnalysisConfig.js.map +1 -0
  21. package/lib/commonjs/v3/DataModels/NutritionalField.js +41 -0
  22. package/lib/commonjs/v3/DataModels/NutritionalField.js.map +1 -0
  23. package/lib/commonjs/v3/DataModels/NutritionalUnit.js +18 -0
  24. package/lib/commonjs/v3/DataModels/NutritionalUnit.js.map +1 -0
  25. package/lib/commonjs/v3/DataModels/Provider.js +1 -1
  26. package/lib/commonjs/v3/DataModels/ProviderSource.js +3 -7
  27. package/lib/commonjs/v3/DataModels/ProviderSource.js.map +1 -1
  28. package/lib/commonjs/v3/SpikeRNConnectionAPIv3.js +114 -0
  29. package/lib/commonjs/v3/SpikeRNConnectionAPIv3.js.map +1 -1
  30. package/lib/commonjs/version.js +1 -1
  31. package/lib/module/index.js +7 -1
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/module/v3/DataModels/ActivityTag.js +0 -1
  34. package/lib/module/v3/DataModels/ActivityTag.js.map +1 -1
  35. package/lib/module/v3/DataModels/NutritionRecord.js +4 -0
  36. package/lib/module/v3/DataModels/NutritionRecord.js.map +1 -0
  37. package/lib/module/v3/DataModels/NutritionRecordAnalysisInput.js +4 -0
  38. package/lib/module/v3/DataModels/NutritionRecordAnalysisInput.js.map +1 -0
  39. package/lib/module/v3/DataModels/NutritionRecordAnalysisMode.js +10 -0
  40. package/lib/module/v3/DataModels/NutritionRecordAnalysisMode.js.map +1 -0
  41. package/lib/module/v3/DataModels/NutritionRecordIngredient.js +4 -0
  42. package/lib/module/v3/DataModels/NutritionRecordIngredient.js.map +1 -0
  43. package/lib/module/v3/DataModels/NutritionRecordStatus.js +13 -0
  44. package/lib/module/v3/DataModels/NutritionRecordStatus.js.map +1 -0
  45. package/lib/module/v3/DataModels/NutritionalAnalysisConfig.js +4 -0
  46. package/lib/module/v3/DataModels/NutritionalAnalysisConfig.js.map +1 -0
  47. package/lib/module/v3/DataModels/NutritionalField.js +37 -0
  48. package/lib/module/v3/DataModels/NutritionalField.js.map +1 -0
  49. package/lib/module/v3/DataModels/NutritionalUnit.js +14 -0
  50. package/lib/module/v3/DataModels/NutritionalUnit.js.map +1 -0
  51. package/lib/module/v3/DataModels/Provider.js +1 -1
  52. package/lib/module/v3/DataModels/ProviderSource.js +3 -7
  53. package/lib/module/v3/DataModels/ProviderSource.js.map +1 -1
  54. package/lib/module/v3/SpikeRNConnectionAPIv3.js +115 -1
  55. package/lib/module/v3/SpikeRNConnectionAPIv3.js.map +1 -1
  56. package/lib/module/version.js +1 -1
  57. package/lib/typescript/index.d.ts +9 -2
  58. package/lib/typescript/index.d.ts.map +1 -1
  59. package/lib/typescript/v3/DataModels/ActivityTag.d.ts +0 -1
  60. package/lib/typescript/v3/DataModels/ActivityTag.d.ts.map +1 -1
  61. package/lib/typescript/v3/DataModels/NutritionRecord.d.ts +24 -0
  62. package/lib/typescript/v3/DataModels/NutritionRecord.d.ts.map +1 -0
  63. package/lib/typescript/v3/DataModels/NutritionRecordAnalysisInput.d.ts +16 -0
  64. package/lib/typescript/v3/DataModels/NutritionRecordAnalysisInput.d.ts.map +1 -0
  65. package/lib/typescript/v3/DataModels/NutritionRecordAnalysisMode.d.ts +5 -0
  66. package/lib/typescript/v3/DataModels/NutritionRecordAnalysisMode.d.ts.map +1 -0
  67. package/lib/typescript/v3/DataModels/NutritionRecordIngredient.d.ts +11 -0
  68. package/lib/typescript/v3/DataModels/NutritionRecordIngredient.d.ts.map +1 -0
  69. package/lib/typescript/v3/DataModels/NutritionRecordStatus.d.ts +8 -0
  70. package/lib/typescript/v3/DataModels/NutritionRecordStatus.d.ts.map +1 -0
  71. package/lib/typescript/v3/DataModels/NutritionalAnalysisConfig.d.ts +12 -0
  72. package/lib/typescript/v3/DataModels/NutritionalAnalysisConfig.d.ts.map +1 -0
  73. package/lib/typescript/v3/DataModels/NutritionalField.d.ts +32 -0
  74. package/lib/typescript/v3/DataModels/NutritionalField.d.ts.map +1 -0
  75. package/lib/typescript/v3/DataModels/NutritionalUnit.d.ts +9 -0
  76. package/lib/typescript/v3/DataModels/NutritionalUnit.d.ts.map +1 -0
  77. package/lib/typescript/v3/DataModels/Provider.d.ts +1 -1
  78. package/lib/typescript/v3/DataModels/Provider.d.ts.map +1 -1
  79. package/lib/typescript/v3/DataModels/ProviderSource.d.ts +3 -7
  80. package/lib/typescript/v3/DataModels/ProviderSource.d.ts.map +1 -1
  81. package/lib/typescript/v3/SpikeRNConnectionAPIv3.d.ts +86 -0
  82. package/lib/typescript/v3/SpikeRNConnectionAPIv3.d.ts.map +1 -1
  83. package/lib/typescript/version.d.ts +1 -1
  84. package/package.json +2 -2
  85. package/src/index.ts +16 -0
  86. package/src/v3/DataModels/ActivityTag.ts +0 -1
  87. package/src/v3/DataModels/NutritionRecord.ts +25 -0
  88. package/src/v3/DataModels/NutritionRecordAnalysisInput.ts +19 -0
  89. package/src/v3/DataModels/NutritionRecordAnalysisMode.ts +7 -0
  90. package/src/v3/DataModels/NutritionRecordIngredient.ts +12 -0
  91. package/src/v3/DataModels/NutritionRecordStatus.ts +10 -0
  92. package/src/v3/DataModels/NutritionalAnalysisConfig.ts +15 -0
  93. package/src/v3/DataModels/NutritionalField.ts +34 -0
  94. package/src/v3/DataModels/NutritionalUnit.ts +11 -0
  95. package/src/v3/DataModels/Provider.ts +1 -1
  96. package/src/v3/DataModels/ProviderSource.ts +3 -7
  97. package/src/v3/SpikeRNConnectionAPIv3.ts +184 -1
  98. package/src/version.ts +1 -1
@@ -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.3.102'
79
+ implementation 'com.spikeapi.sdk:spike-sdk:4.3.112'
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'
@@ -19,6 +19,8 @@ import com.spikeapi.apiv3.datamodels.MetricType
19
19
  import com.spikeapi.apiv3.datamodels.ActivityConfig
20
20
  import com.spikeapi.apiv3.datamodels.SleepConfig
21
21
  import com.spikeapi.apiv3.datamodels.StatisticsType
22
+ import com.spikeapi.apiv3.datamodels.NutritionRecord
23
+ import com.spikeapi.apiv3.datamodels.NutritionalAnalysisConfig
22
24
  import com.spikeapi.apiv3.datamodels.utils.ActivityConfigUtils
23
25
  import com.spikeapi.apiv3.datamodels.utils.SleepConfigUtils
24
26
  import com.spikeapi.apiv3.datamodels.utils.StatisticsTypeUtils
@@ -1388,7 +1390,133 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
1388
1390
 
1389
1391
 
1390
1392
 
1391
- /// ---
1393
+ /// --- Nutrition AI ---
1394
+
1395
+ @ReactMethod
1396
+ fun analyzeNutrition(
1397
+ connectionUUID: String,
1398
+ imageBase64: String,
1399
+ consumedAt: String?,
1400
+ config: String?,
1401
+ promise: Promise
1402
+ ) {
1403
+ executeV3MethodWithConnection("analyzeNutrition", connectionUUID, promise) { connection ->
1404
+ val consumedAtInstant = consumedAt?.let { convertIsoStringToInstant(it) }
1405
+ val configObject = config?.let { parseNutritionalAnalysisConfig(it) }
1406
+
1407
+ val result = connection.analyzeNutrition(
1408
+ imageBase64 = imageBase64,
1409
+ consumedAt = consumedAtInstant,
1410
+ config = configObject
1411
+ )
1412
+
1413
+ promise.resolve(SpikeConnectionAPIv3.convertToJson(result))
1414
+ }
1415
+ }
1416
+
1417
+ @ReactMethod
1418
+ fun submitNutritionForAnalysis(
1419
+ connectionUUID: String,
1420
+ imageBase64: String,
1421
+ consumedAt: String?,
1422
+ config: String?,
1423
+ promise: Promise
1424
+ ) {
1425
+ executeV3MethodWithConnection("submitNutritionForAnalysis", connectionUUID, promise) { connection ->
1426
+ val consumedAtInstant = consumedAt?.let { convertIsoStringToInstant(it) }
1427
+ val configObject = config?.let { parseNutritionalAnalysisConfig(it) }
1428
+
1429
+ val result = connection.submitNutritionForAnalysis(
1430
+ imageBase64 = imageBase64,
1431
+ consumedAt = consumedAtInstant,
1432
+ config = configObject
1433
+ )
1434
+
1435
+ promise.resolve(result.toString())
1436
+ }
1437
+ }
1438
+
1439
+ private fun parseNutritionalAnalysisConfig(json: String): NutritionalAnalysisConfig? {
1440
+ return try {
1441
+ NutritionalAnalysisConfigUtils.fromValue(json)
1442
+ } catch (e: Exception) {
1443
+ Log.e("SpikeSdkModule", "Error parsing NutritionalAnalysisConfig: ${e.message}")
1444
+ null
1445
+ }
1446
+ }
1447
+
1448
+ @ReactMethod
1449
+ fun getNutritionRecords(
1450
+ connectionUUID: String,
1451
+ from: String,
1452
+ to: String,
1453
+ promise: Promise
1454
+ ) {
1455
+ executeV3MethodWithConnection("getNutritionRecords", connectionUUID, promise) { connection ->
1456
+ val dateFrom = convertIsoStringToInstant(from)
1457
+ val dateTo = convertIsoStringToInstant(to)
1458
+
1459
+ val result = connection.getNutritionRecords(
1460
+ from = dateFrom,
1461
+ to = dateTo
1462
+ )
1463
+
1464
+ promise.resolve(SpikeConnectionAPIv3.convertToJson(result))
1465
+ }
1466
+ }
1467
+
1468
+ @ReactMethod
1469
+ fun getNutritionRecord(
1470
+ connectionUUID: String,
1471
+ recordId: String,
1472
+ promise: Promise
1473
+ ) {
1474
+ executeV3MethodWithConnection("getNutritionRecord", connectionUUID, promise) { connection ->
1475
+ val uuid = UUID.fromString(recordId)
1476
+
1477
+ val result = connection.getNutritionRecord(id = uuid)
1478
+
1479
+ if (result != null) {
1480
+ promise.resolve(SpikeConnectionAPIv3.convertToJson(result))
1481
+ } else {
1482
+ promise.resolve(null)
1483
+ }
1484
+ }
1485
+ }
1486
+
1487
+ @ReactMethod
1488
+ fun deleteNutritionRecord(
1489
+ connectionUUID: String,
1490
+ recordId: String,
1491
+ promise: Promise
1492
+ ) {
1493
+ executeV3MethodWithConnection("deleteNutritionRecord", connectionUUID, promise) { connection ->
1494
+ val uuid = UUID.fromString(recordId)
1495
+
1496
+ connection.deleteNutritionRecord(id = uuid)
1497
+
1498
+ promise.resolve(true)
1499
+ }
1500
+ }
1501
+
1502
+ @ReactMethod
1503
+ fun updateNutritionRecordServingSize(
1504
+ connectionUUID: String,
1505
+ recordId: String,
1506
+ servingSize: Double,
1507
+ promise: Promise
1508
+ ) {
1509
+ executeV3MethodWithConnection("updateNutritionRecordServingSize", connectionUUID, promise) { connection ->
1510
+ val uuid = UUID.fromString(recordId)
1511
+
1512
+ val result = connection.updateNutritionRecordServingSize(
1513
+ id = uuid,
1514
+ servingSize = servingSize
1515
+ )
1516
+
1517
+ promise.resolve(SpikeConnectionAPIv3.convertToJson(result))
1518
+ }
1519
+ }
1392
1520
 
1393
1521
  }
1394
1522
 
package/ios/SpikeSdk.m CHANGED
@@ -196,4 +196,42 @@ RCT_EXTERN_METHOD(isHealthKitIntegrationEnabled: (NSString)connectionUUID
196
196
  withResolver: (RCTPromiseResolveBlock)resolve
197
197
  withRejecter: (RCTPromiseRejectBlock)reject)
198
198
 
199
+ // MARK: Nutrition AI
200
+
201
+ RCT_EXTERN_METHOD(analyzeNutrition: (NSString)connectionUUID
202
+ imageBase64: (NSString)imageBase64
203
+ consumedAt: (NSString)consumedAt
204
+ config: (NSString)config
205
+ withResolver: (RCTPromiseResolveBlock)resolve
206
+ withRejecter: (RCTPromiseRejectBlock)reject)
207
+
208
+ RCT_EXTERN_METHOD(submitNutritionForAnalysis: (NSString)connectionUUID
209
+ imageBase64: (NSString)imageBase64
210
+ consumedAt: (NSString)consumedAt
211
+ config: (NSString)config
212
+ withResolver: (RCTPromiseResolveBlock)resolve
213
+ withRejecter: (RCTPromiseRejectBlock)reject)
214
+
215
+ RCT_EXTERN_METHOD(getNutritionRecords: (NSString)connectionUUID
216
+ from: (NSString)from
217
+ to: (NSString)to
218
+ withResolver: (RCTPromiseResolveBlock)resolve
219
+ withRejecter: (RCTPromiseRejectBlock)reject)
220
+
221
+ RCT_EXTERN_METHOD(getNutritionRecord: (NSString)connectionUUID
222
+ recordId: (NSString)recordId
223
+ withResolver: (RCTPromiseResolveBlock)resolve
224
+ withRejecter: (RCTPromiseRejectBlock)reject)
225
+
226
+ RCT_EXTERN_METHOD(deleteNutritionRecord: (NSString)connectionUUID
227
+ recordId: (NSString)recordId
228
+ withResolver: (RCTPromiseResolveBlock)resolve
229
+ withRejecter: (RCTPromiseRejectBlock)reject)
230
+
231
+ RCT_EXTERN_METHOD(updateNutritionRecordServingSize: (NSString)connectionUUID
232
+ recordId: (NSString)recordId
233
+ servingSize: (double)servingSize
234
+ withResolver: (RCTPromiseResolveBlock)resolve
235
+ withRejecter: (RCTPromiseRejectBlock)reject)
236
+
199
237
  @end
@@ -1023,6 +1023,19 @@ class SpikeSdk: RCTEventEmitter {
1023
1023
  return config
1024
1024
  }
1025
1025
 
1026
+ private func makeNutritionalAnalysisConfig(fromString string: String?) throws -> NutritionalAnalysisConfig? {
1027
+ guard let string else {
1028
+ return nil
1029
+ }
1030
+ guard let data = string.data(using: .utf8) else {
1031
+ throw SpikeDataDecodingException()
1032
+ }
1033
+ let decoder = SpikeSDK.JSONDecoder.spikeDefaultJsonDecoder
1034
+ let config = try decoder.decode(NutritionalAnalysisConfig.self, from: data)
1035
+
1036
+ return config
1037
+ }
1038
+
1026
1039
  @objc(getUserProperties:withMetrics:withResolver:withRejecter:)
1027
1040
  func getUserProperties(
1028
1041
  connectionUUID: String,
@@ -1099,4 +1112,228 @@ class SpikeSdk: RCTEventEmitter {
1099
1112
  }
1100
1113
  }
1101
1114
 
1115
+ // MARK: - Nutrition AI
1116
+
1117
+ @objc(analyzeNutrition:
1118
+ imageBase64:
1119
+ consumedAt:
1120
+ config:
1121
+ withResolver:
1122
+ withRejecter:)
1123
+ func analyzeNutrition(
1124
+ connectionUUID: String,
1125
+ imageBase64: String,
1126
+ consumedAt: String?,
1127
+ config: String?,
1128
+ resolve: @escaping RCTPromiseResolveBlock,
1129
+ reject: @escaping RCTPromiseRejectBlock
1130
+ ) {
1131
+ Task {
1132
+ do {
1133
+ guard let connection = getConnectionV3(withUUID: connectionUUID) else {
1134
+ spikeReject(with: SpikeConnectionNotFoundException(), reject: reject)
1135
+ return
1136
+ }
1137
+
1138
+ let consumedAtDate = try consumedAt != nil ? makeDate(fromString: consumedAt!) : nil
1139
+ let configObject = try makeNutritionalAnalysisConfig(fromString: config)
1140
+
1141
+ let result = try await connection.analyzeNutrition(
1142
+ imageBase64: imageBase64,
1143
+ consumedAt: consumedAtDate,
1144
+ config: configObject
1145
+ )
1146
+
1147
+ let encoder = SpikeSDK.JSONEncoder.spikeDefaultJsonEncoder
1148
+ let jsonResult = try encoder.encode(result)
1149
+ let stringResult = String(data: jsonResult, encoding: .utf8)
1150
+
1151
+ resolve(stringResult)
1152
+ } catch let error {
1153
+ spikeReject(with: error, reject: reject)
1154
+ }
1155
+ }
1156
+ }
1157
+
1158
+ @objc(submitNutritionForAnalysis:
1159
+ imageBase64:
1160
+ consumedAt:
1161
+ config:
1162
+ withResolver:
1163
+ withRejecter:)
1164
+ func submitNutritionForAnalysis(
1165
+ connectionUUID: String,
1166
+ imageBase64: String,
1167
+ consumedAt: String?,
1168
+ config: String?,
1169
+ resolve: @escaping RCTPromiseResolveBlock,
1170
+ reject: @escaping RCTPromiseRejectBlock
1171
+ ) {
1172
+ Task {
1173
+ do {
1174
+ guard let connection = getConnectionV3(withUUID: connectionUUID) else {
1175
+ spikeReject(with: SpikeConnectionNotFoundException(), reject: reject)
1176
+ return
1177
+ }
1178
+
1179
+ let consumedAtDate = try consumedAt != nil ? makeDate(fromString: consumedAt!) : nil
1180
+ let configObject = try makeNutritionalAnalysisConfig(fromString: config)
1181
+
1182
+ let result = try await connection.submitNutritionForAnalysis(
1183
+ imageBase64: imageBase64,
1184
+ consumedAt: consumedAtDate,
1185
+ config: configObject
1186
+ )
1187
+
1188
+ resolve(result.uuidString)
1189
+ } catch let error {
1190
+ spikeReject(with: error, reject: reject)
1191
+ }
1192
+ }
1193
+ }
1194
+
1195
+ @objc(getNutritionRecords:
1196
+ from:
1197
+ to:
1198
+ withResolver:
1199
+ withRejecter:)
1200
+ func getNutritionRecords(
1201
+ connectionUUID: String,
1202
+ from: String,
1203
+ to: String,
1204
+ resolve: @escaping RCTPromiseResolveBlock,
1205
+ reject: @escaping RCTPromiseRejectBlock
1206
+ ) {
1207
+ Task {
1208
+ do {
1209
+ guard let connection = getConnectionV3(withUUID: connectionUUID) else {
1210
+ spikeReject(with: SpikeConnectionNotFoundException(), reject: reject)
1211
+ return
1212
+ }
1213
+
1214
+ let dateFrom = try makeDate(fromString: from)
1215
+ let dateTo = try makeDate(fromString: to)
1216
+
1217
+ let result = try await connection.getNutritionRecords(
1218
+ from: dateFrom,
1219
+ to: dateTo
1220
+ )
1221
+
1222
+ let encoder = SpikeSDK.JSONEncoder.spikeDefaultJsonEncoder
1223
+ let jsonResult = try encoder.encode(result)
1224
+ let stringResult = String(data: jsonResult, encoding: .utf8)
1225
+
1226
+ resolve(stringResult)
1227
+ } catch let error {
1228
+ spikeReject(with: error, reject: reject)
1229
+ }
1230
+ }
1231
+ }
1232
+
1233
+ @objc(getNutritionRecord:
1234
+ recordId:
1235
+ withResolver:
1236
+ withRejecter:)
1237
+ func getNutritionRecord(
1238
+ connectionUUID: String,
1239
+ recordId: String,
1240
+ resolve: @escaping RCTPromiseResolveBlock,
1241
+ reject: @escaping RCTPromiseRejectBlock
1242
+ ) {
1243
+ Task {
1244
+ do {
1245
+ guard let connection = getConnectionV3(withUUID: connectionUUID) else {
1246
+ spikeReject(with: SpikeConnectionNotFoundException(), reject: reject)
1247
+ return
1248
+ }
1249
+
1250
+ guard let uuid = UUID(uuidString: recordId) else {
1251
+ throw SpikeDataDecodingException()
1252
+ }
1253
+
1254
+ let result = try await connection.getNutritionRecord(id: uuid)
1255
+
1256
+ if let result = result {
1257
+ let encoder = SpikeSDK.JSONEncoder.spikeDefaultJsonEncoder
1258
+ let jsonResult = try encoder.encode(result)
1259
+ let stringResult = String(data: jsonResult, encoding: .utf8)
1260
+ resolve(stringResult)
1261
+ } else {
1262
+ resolve(nil)
1263
+ }
1264
+ } catch let error {
1265
+ spikeReject(with: error, reject: reject)
1266
+ }
1267
+ }
1268
+ }
1269
+
1270
+ @objc(deleteNutritionRecord:
1271
+ recordId:
1272
+ withResolver:
1273
+ withRejecter:)
1274
+ func deleteNutritionRecord(
1275
+ connectionUUID: String,
1276
+ recordId: String,
1277
+ resolve: @escaping RCTPromiseResolveBlock,
1278
+ reject: @escaping RCTPromiseRejectBlock
1279
+ ) {
1280
+ Task {
1281
+ do {
1282
+ guard let connection = getConnectionV3(withUUID: connectionUUID) else {
1283
+ spikeReject(with: SpikeConnectionNotFoundException(), reject: reject)
1284
+ return
1285
+ }
1286
+
1287
+ guard let uuid = UUID(uuidString: recordId) else {
1288
+ throw SpikeDataDecodingException()
1289
+ }
1290
+
1291
+ try await connection.deleteNutritionRecord(id: uuid)
1292
+
1293
+ resolve(Void())
1294
+ } catch let error {
1295
+ spikeReject(with: error, reject: reject)
1296
+ }
1297
+ }
1298
+ }
1299
+
1300
+ @objc(updateNutritionRecordServingSize:
1301
+ recordId:
1302
+ servingSize:
1303
+ withResolver:
1304
+ withRejecter:)
1305
+ func updateNutritionRecordServingSize(
1306
+ connectionUUID: String,
1307
+ recordId: String,
1308
+ servingSize: Double,
1309
+ resolve: @escaping RCTPromiseResolveBlock,
1310
+ reject: @escaping RCTPromiseRejectBlock
1311
+ ) {
1312
+ Task {
1313
+ do {
1314
+ guard let connection = getConnectionV3(withUUID: connectionUUID) else {
1315
+ spikeReject(with: SpikeConnectionNotFoundException(), reject: reject)
1316
+ return
1317
+ }
1318
+
1319
+ guard let uuid = UUID(uuidString: recordId) else {
1320
+ throw SpikeDataDecodingException()
1321
+ }
1322
+
1323
+ let result = try await connection.updateNutritionRecordServingSize(
1324
+ id: uuid,
1325
+ servingSize: servingSize
1326
+ )
1327
+
1328
+ let encoder = SpikeSDK.JSONEncoder.spikeDefaultJsonEncoder
1329
+ let jsonResult = try encoder.encode(result)
1330
+ let stringResult = String(data: jsonResult, encoding: .utf8)
1331
+
1332
+ resolve(stringResult)
1333
+ } catch let error {
1334
+ spikeReject(with: error, reject: reject)
1335
+ }
1336
+ }
1337
+ }
1338
+
1102
1339
  }
@@ -63,6 +63,30 @@ Object.defineProperty(exports, "MetricType", {
63
63
  return _MetricType.MetricType;
64
64
  }
65
65
  });
66
+ Object.defineProperty(exports, "NutritionRecordAnalysisMode", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _NutritionRecordAnalysisMode.NutritionRecordAnalysisMode;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "NutritionRecordStatus", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _NutritionRecordStatus.NutritionRecordStatus;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "NutritionalField", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _NutritionalField.NutritionalField;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "NutritionalUnit", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _NutritionalUnit.NutritionalUnit;
88
+ }
89
+ });
66
90
  Object.defineProperty(exports, "Provider", {
67
91
  enumerable: true,
68
92
  get: function () {
@@ -213,6 +237,10 @@ var _ActivityAdditionalData = require("./v3/DataModels/ActivityAdditionalData");
213
237
  var _ActivityConfig = require("./v3/DataModels/ActivityConfig");
214
238
  var _SleepConfig = require("./v3/DataModels/SleepConfig");
215
239
  var _LogLevel = require("./v3/DataModels/LogLevel");
240
+ var _NutritionRecordStatus = require("./v3/DataModels/NutritionRecordStatus");
241
+ var _NutritionRecordAnalysisMode = require("./v3/DataModels/NutritionRecordAnalysisMode");
242
+ var _NutritionalField = require("./v3/DataModels/NutritionalField");
243
+ var _NutritionalUnit = require("./v3/DataModels/NutritionalUnit");
216
244
  var _default = exports.default = {
217
245
  createConnection: _Spike.createConnection,
218
246
  getBackgroundConnections: _Spike.getBackgroundConnections,
@@ -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","_LogLevel","_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;AAQA,IAAAsB,SAAA,GAAAtB,OAAA;AAAoD,IAAAuB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA3ErC;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":[]}
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","_LogLevel","_NutritionRecordStatus","_NutritionRecordAnalysisMode","_NutritionalField","_NutritionalUnit","_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;AAQA,IAAAsB,SAAA,GAAAtB,OAAA;AAGA,IAAAuB,sBAAA,GAAAvB,OAAA;AACA,IAAAwB,4BAAA,GAAAxB,OAAA;AAEA,IAAAyB,iBAAA,GAAAzB,OAAA;AACA,IAAA0B,gBAAA,GAAA1B,OAAA;AAAkE,IAAA2B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAlFnD;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":[]}
@@ -8,7 +8,6 @@ exports.ActivityTag = void 0;
8
8
  // See data-model-generation script for more details
9
9
  let ActivityTag = exports.ActivityTag = /*#__PURE__*/function (ActivityTag) {
10
10
  ActivityTag["onFoot"] = "on_foot";
11
- ActivityTag["onBicycle"] = "on_bicycle";
12
11
  ActivityTag["walking"] = "walking";
13
12
  ActivityTag["running"] = "running";
14
13
  ActivityTag["cycling"] = "cycling";
@@ -1 +1 @@
1
- {"version":3,"names":["ActivityTag","exports"],"sourceRoot":"../../../../src","sources":["v3/DataModels/ActivityTag.ts"],"mappings":";;;;;;AACA;AACA;AAAA,IACYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["ActivityTag","exports"],"sourceRoot":"../../../../src","sources":["v3/DataModels/ActivityTag.ts"],"mappings":";;;;;;AACA;AACA;AAAA,IACYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=NutritionRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["v3/DataModels/NutritionRecord.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=NutritionRecordAnalysisInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["v3/DataModels/NutritionRecordAnalysisInput.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NutritionRecordAnalysisMode = void 0;
7
+ // This is auto-generated file. Please do not edit it!
8
+ // See data-model-generation script for more details
9
+ let NutritionRecordAnalysisMode = exports.NutritionRecordAnalysisMode = /*#__PURE__*/function (NutritionRecordAnalysisMode) {
10
+ NutritionRecordAnalysisMode["fast"] = "fast";
11
+ NutritionRecordAnalysisMode["precise"] = "precise";
12
+ return NutritionRecordAnalysisMode;
13
+ }({});
14
+ //# sourceMappingURL=NutritionRecordAnalysisMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NutritionRecordAnalysisMode","exports"],"sourceRoot":"../../../../src","sources":["v3/DataModels/NutritionRecordAnalysisMode.ts"],"mappings":";;;;;;AACA;AACA;AAAA,IACYA,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,0BAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAAA,OAA3BA,2BAA2B;AAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=NutritionRecordIngredient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["v3/DataModels/NutritionRecordIngredient.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NutritionRecordStatus = void 0;
7
+ // This is auto-generated file. Please do not edit it!
8
+ // See data-model-generation script for more details
9
+ let NutritionRecordStatus = exports.NutritionRecordStatus = /*#__PURE__*/function (NutritionRecordStatus) {
10
+ NutritionRecordStatus["pending"] = "pending";
11
+ NutritionRecordStatus["processing"] = "processing";
12
+ NutritionRecordStatus["completed"] = "completed";
13
+ NutritionRecordStatus["failed"] = "failed";
14
+ NutritionRecordStatus["unknown"] = "_unknown";
15
+ return NutritionRecordStatus;
16
+ }({});
17
+ //# sourceMappingURL=NutritionRecordStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NutritionRecordStatus","exports"],"sourceRoot":"../../../../src","sources":["v3/DataModels/NutritionRecordStatus.ts"],"mappings":";;;;;;AACA;AACA;AAAA,IACYA,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=NutritionalAnalysisConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["v3/DataModels/NutritionalAnalysisConfig.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NutritionalField = void 0;
7
+ // This is auto-generated file. Please do not edit it!
8
+ // See data-model-generation script for more details
9
+ let NutritionalField = exports.NutritionalField = /*#__PURE__*/function (NutritionalField) {
10
+ NutritionalField["energyKcal"] = "energy_kcal";
11
+ NutritionalField["carbohydrateG"] = "carbohydrate_g";
12
+ NutritionalField["proteinG"] = "protein_g";
13
+ NutritionalField["fatTotalG"] = "fat_total_g";
14
+ NutritionalField["fatSaturatedG"] = "fat_saturated_g";
15
+ NutritionalField["fatPolyunsaturatedG"] = "fat_polyunsaturated_g";
16
+ NutritionalField["fatMonounsaturatedG"] = "fat_monounsaturated_g";
17
+ NutritionalField["fatTransG"] = "fat_trans_g";
18
+ NutritionalField["fiberTotalDietaryG"] = "fiber_total_dietary_g";
19
+ NutritionalField["sugarsTotalG"] = "sugars_total_g";
20
+ NutritionalField["cholesterolMg"] = "cholesterol_mg";
21
+ NutritionalField["sodiumMg"] = "sodium_mg";
22
+ NutritionalField["potassiumMg"] = "potassium_mg";
23
+ NutritionalField["calciumMg"] = "calcium_mg";
24
+ NutritionalField["ironMg"] = "iron_mg";
25
+ NutritionalField["magnesiumMg"] = "magnesium_mg";
26
+ NutritionalField["phosphorusMg"] = "phosphorus_mg";
27
+ NutritionalField["zincMg"] = "zinc_mg";
28
+ NutritionalField["vitaminARaeMcg"] = "vitamin_a_rae_mcg";
29
+ NutritionalField["vitaminCMg"] = "vitamin_c_mg";
30
+ NutritionalField["vitaminDMcg"] = "vitamin_d_mcg";
31
+ NutritionalField["vitaminEMg"] = "vitamin_e_mg";
32
+ NutritionalField["vitaminKMcg"] = "vitamin_k_mcg";
33
+ NutritionalField["thiaminMg"] = "thiamin_mg";
34
+ NutritionalField["riboflavinMg"] = "riboflavin_mg";
35
+ NutritionalField["niacinMg"] = "niacin_mg";
36
+ NutritionalField["vitaminB6Mg"] = "vitamin_b6_mg";
37
+ NutritionalField["folateMcg"] = "folate_mcg";
38
+ NutritionalField["vitaminB12Mcg"] = "vitamin_b12_mcg";
39
+ return NutritionalField;
40
+ }({});
41
+ //# sourceMappingURL=NutritionalField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NutritionalField","exports"],"sourceRoot":"../../../../src","sources":["v3/DataModels/NutritionalField.ts"],"mappings":";;;;;;AACA;AACA;AAAA,IACYA,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NutritionalUnit = void 0;
7
+ // This is auto-generated file. Please do not edit it!
8
+ // See data-model-generation script for more details
9
+ let NutritionalUnit = exports.NutritionalUnit = /*#__PURE__*/function (NutritionalUnit) {
10
+ NutritionalUnit["g"] = "g";
11
+ NutritionalUnit["mg"] = "mg";
12
+ NutritionalUnit["mcg"] = "mcg";
13
+ NutritionalUnit["ml"] = "ml";
14
+ NutritionalUnit["kcal"] = "kcal";
15
+ NutritionalUnit["unknown"] = "_unknown";
16
+ return NutritionalUnit;
17
+ }({});
18
+ //# sourceMappingURL=NutritionalUnit.js.map