@kingstinct/react-native-healthkit 12.1.2 → 12.2.0

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 (266) hide show
  1. package/ios/CategoryTypeModule.swift +49 -97
  2. package/ios/CharacteristicTypeModule.swift +77 -63
  3. package/ios/CoreModule.swift +324 -280
  4. package/ios/CorrelationTypeModule.swift +192 -144
  5. package/ios/ElectrocardiogramModule.swift +185 -194
  6. package/ios/HeartbeatSeriesModule.swift +123 -171
  7. package/ios/Helpers.swift +312 -571
  8. package/ios/MedicationModule.swift +259 -0
  9. package/ios/PredicateHelpers.swift +334 -0
  10. package/ios/QuantityTypeModule.swift +297 -378
  11. package/ios/Serializers.swift +273 -210
  12. package/ios/SourceProxy.swift +2 -2
  13. package/ios/StateOfMindModule.swift +179 -125
  14. package/ios/WorkoutProxy.swift +235 -112
  15. package/ios/WorkoutsModule.swift +214 -262
  16. package/lib/commonjs/healthkit.ios.js +22 -2
  17. package/lib/commonjs/healthkit.js +35 -5
  18. package/lib/commonjs/hooks/useStatisticsForQuantity.js +1 -1
  19. package/lib/commonjs/hooks/useSubscribeToCategorySamples.js +20 -0
  20. package/lib/commonjs/modules.js +2 -1
  21. package/lib/commonjs/specs/MedicationModule.nitro.js +27 -0
  22. package/lib/commonjs/types/Constants.js +2 -1
  23. package/lib/commonjs/types/QuantityType.js +8 -1
  24. package/lib/commonjs/types/QueryOptions.js +18 -0
  25. package/lib/commonjs/types/WeatherCondition.js +32 -32
  26. package/lib/commonjs/types/Workouts.js +1 -50
  27. package/lib/commonjs/utils/getCategorySampleById.js +1 -1
  28. package/lib/commonjs/utils/getQuantitySampleById.js +1 -1
  29. package/lib/commonjs/utils/getWorkoutById.js +1 -1
  30. package/lib/commonjs/utils/subscribeToCategorySamples.js +29 -0
  31. package/lib/commonjs/utils/subscribeToQuantitySamples.js +8 -25
  32. package/lib/module/healthkit.ios.js +20 -2
  33. package/lib/module/healthkit.js +32 -2
  34. package/lib/module/hooks/useStatisticsForQuantity.js +1 -1
  35. package/lib/module/hooks/useSubscribeToCategorySamples.js +17 -0
  36. package/lib/module/modules.js +1 -0
  37. package/lib/module/specs/MedicationModule.nitro.js +26 -0
  38. package/lib/module/types/Constants.js +1 -0
  39. package/lib/module/types/QuantityType.js +7 -0
  40. package/lib/module/types/QueryOptions.js +17 -1
  41. package/lib/module/types/WeatherCondition.js +31 -31
  42. package/lib/module/types/Workouts.js +0 -49
  43. package/lib/module/utils/getCategorySampleById.js +1 -1
  44. package/lib/module/utils/getQuantitySampleById.js +1 -1
  45. package/lib/module/utils/getWorkoutById.js +1 -1
  46. package/lib/module/utils/subscribeToCategorySamples.js +26 -0
  47. package/lib/module/utils/subscribeToQuantitySamples.js +8 -25
  48. package/lib/typescript/healthkit.d.ts +18 -9
  49. package/lib/typescript/healthkit.ios.d.ts +33 -15
  50. package/lib/typescript/hooks/useSubscribeToCategorySamples.d.ts +3 -0
  51. package/lib/typescript/modules.d.ts +2 -0
  52. package/lib/typescript/specs/CategoryTypeModule.nitro.d.ts +2 -2
  53. package/lib/typescript/specs/CoreModule.nitro.d.ts +2 -1
  54. package/lib/typescript/specs/CorrelationTypeModule.nitro.d.ts +4 -2
  55. package/lib/typescript/specs/ElectrocardiogramModule.nitro.d.ts +1 -1
  56. package/lib/typescript/specs/HeartbeatSeriesModule.nitro.d.ts +1 -1
  57. package/lib/typescript/specs/MedicationModule.nitro.d.ts +56 -0
  58. package/lib/typescript/specs/QuantityTypeModule.nitro.d.ts +4 -4
  59. package/lib/typescript/specs/StateOfMindModule.nitro.d.ts +4 -3
  60. package/lib/typescript/types/CategoryType.d.ts +10 -20
  61. package/lib/typescript/types/Constants.d.ts +1 -0
  62. package/lib/typescript/types/CorrelationType.d.ts +8 -10
  63. package/lib/typescript/types/ElectrocardiogramSample.d.ts +2 -12
  64. package/lib/typescript/types/HeartbeatSeries.d.ts +2 -14
  65. package/lib/typescript/types/QuantitySample.d.ts +2 -8
  66. package/lib/typescript/types/QuantityType.d.ts +7 -8
  67. package/lib/typescript/types/QuantityTypeIdentifier.d.ts +23 -23
  68. package/lib/typescript/types/QueryOptions.d.ts +43 -28
  69. package/lib/typescript/types/Shared.d.ts +52 -7
  70. package/lib/typescript/types/StateOfMind.d.ts +7 -10
  71. package/lib/typescript/types/Subscriptions.d.ts +12 -3
  72. package/lib/typescript/types/WeatherCondition.d.ts +1 -1
  73. package/lib/typescript/types/Workouts.d.ts +28 -81
  74. package/lib/typescript/utils/subscribeToCategorySamples.d.ts +5 -0
  75. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Bridge.cpp +57 -0
  76. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Bridge.hpp +592 -389
  77. package/nitrogen/generated/ios/ReactNativeHealthkit-Swift-Cxx-Umbrella.hpp +65 -30
  78. package/nitrogen/generated/ios/ReactNativeHealthkitAutolinking.mm +8 -0
  79. package/nitrogen/generated/ios/ReactNativeHealthkitAutolinking.swift +15 -0
  80. package/nitrogen/generated/ios/c++/HybridCategoryTypeModuleSpecSwift.hpp +32 -26
  81. package/nitrogen/generated/ios/c++/HybridCoreModuleSpecSwift.hpp +36 -37
  82. package/nitrogen/generated/ios/c++/HybridCorrelationTypeModuleSpecSwift.hpp +55 -2
  83. package/nitrogen/generated/ios/c++/HybridElectrocardiogramModuleSpecSwift.hpp +36 -30
  84. package/nitrogen/generated/ios/c++/HybridHeartbeatSeriesModuleSpecSwift.hpp +35 -29
  85. package/nitrogen/generated/ios/c++/HybridMedicationModuleSpecSwift.cpp +11 -0
  86. package/nitrogen/generated/ios/c++/HybridMedicationModuleSpecSwift.hpp +181 -0
  87. package/nitrogen/generated/ios/c++/HybridQuantityTypeModuleSpecSwift.hpp +48 -42
  88. package/nitrogen/generated/ios/c++/HybridStateOfMindModuleSpecSwift.hpp +59 -36
  89. package/nitrogen/generated/ios/c++/HybridWorkoutProxySpecSwift.hpp +150 -29
  90. package/nitrogen/generated/ios/c++/HybridWorkoutsModuleSpecSwift.hpp +13 -28
  91. package/nitrogen/generated/ios/swift/AggregationStyle.swift +48 -0
  92. package/nitrogen/generated/ios/swift/CategorySample.swift +571 -24
  93. package/nitrogen/generated/ios/swift/ComparisonPredicateOperator.swift +2 -2
  94. package/nitrogen/generated/ios/swift/CorrelationSample.swift +640 -17
  95. package/nitrogen/generated/ios/swift/{PredicateWithStartAndEnd.swift → DateFilter.swift} +5 -5
  96. package/nitrogen/generated/ios/swift/ECGQueryOptionsWithAnchor.swift +11 -91
  97. package/nitrogen/generated/ios/swift/ECGQueryOptionsWithSortOrder.swift +11 -91
  98. package/nitrogen/generated/ios/swift/ElectrocardiogramSample.swift +570 -72
  99. package/nitrogen/generated/ios/swift/FilterForSamples.swift +349 -12
  100. package/nitrogen/generated/ios/swift/FilterForSamplesBase.swift +234 -0
  101. package/nitrogen/generated/ios/swift/FilterForWorkouts.swift +366 -0
  102. package/nitrogen/generated/ios/swift/FilterForWorkoutsBase.swift +240 -0
  103. package/nitrogen/generated/ios/swift/Func_void_MedicationDoseEventsWithAnchorResponse.swift +47 -0
  104. package/nitrogen/generated/ios/swift/Func_void_QueryCorrelationSamplesWithAnchorResponse.swift +47 -0
  105. package/nitrogen/generated/ios/swift/Func_void_StateOfMindSamplesWithAnchorResponse.swift +47 -0
  106. package/nitrogen/generated/ios/swift/Func_void_std__vector_MedicationDoseEvent_.swift +47 -0
  107. package/nitrogen/generated/ios/swift/Func_void_std__vector_UserAnnotatedMedication_.swift +47 -0
  108. package/nitrogen/generated/ios/swift/GeneralForm.swift +104 -0
  109. package/nitrogen/generated/ios/swift/HeartRateMotionContext.swift +44 -0
  110. package/nitrogen/generated/ios/swift/HeartbeatSeriesSample.swift +565 -37
  111. package/nitrogen/generated/ios/swift/HybridCategoryTypeModuleSpec.swift +1 -1
  112. package/nitrogen/generated/ios/swift/HybridCategoryTypeModuleSpec_cxx.swift +2 -2
  113. package/nitrogen/generated/ios/swift/HybridCoreModuleSpec.swift +2 -1
  114. package/nitrogen/generated/ios/swift/HybridCoreModuleSpec_cxx.swift +19 -31
  115. package/nitrogen/generated/ios/swift/HybridCorrelationTypeModuleSpec.swift +2 -1
  116. package/nitrogen/generated/ios/swift/HybridCorrelationTypeModuleSpec_cxx.swift +21 -2
  117. package/nitrogen/generated/ios/swift/HybridElectrocardiogramModuleSpec.swift +1 -1
  118. package/nitrogen/generated/ios/swift/HybridElectrocardiogramModuleSpec_cxx.swift +2 -2
  119. package/nitrogen/generated/ios/swift/HybridHeartbeatSeriesModuleSpec.swift +1 -1
  120. package/nitrogen/generated/ios/swift/HybridHeartbeatSeriesModuleSpec_cxx.swift +2 -2
  121. package/nitrogen/generated/ios/swift/HybridMedicationModuleSpec.swift +60 -0
  122. package/nitrogen/generated/ios/swift/HybridMedicationModuleSpec_cxx.swift +208 -0
  123. package/nitrogen/generated/ios/swift/HybridQuantityTypeModuleSpec.swift +2 -2
  124. package/nitrogen/generated/ios/swift/HybridQuantityTypeModuleSpec_cxx.swift +9 -43
  125. package/nitrogen/generated/ios/swift/HybridStateOfMindModuleSpec.swift +2 -1
  126. package/nitrogen/generated/ios/swift/HybridStateOfMindModuleSpec_cxx.swift +21 -2
  127. package/nitrogen/generated/ios/swift/HybridWorkoutProxySpec.swift +34 -6
  128. package/nitrogen/generated/ios/swift/HybridWorkoutProxySpec_cxx.swift +376 -36
  129. package/nitrogen/generated/ios/swift/InsulinDeliveryReason.swift +40 -0
  130. package/nitrogen/generated/ios/swift/MedicationConcept.swift +80 -0
  131. package/nitrogen/generated/ios/swift/MedicationDoseEvent.swift +781 -0
  132. package/nitrogen/generated/ios/swift/MedicationDoseEventLogStatus.swift +56 -0
  133. package/nitrogen/generated/ios/swift/MedicationDoseEventScheduleType.swift +40 -0
  134. package/nitrogen/generated/ios/swift/MedicationDoseEventsWithAnchorResponse.swift +81 -0
  135. package/nitrogen/generated/ios/swift/ObjectTypeIdentifier.swift +16 -16
  136. package/nitrogen/generated/ios/swift/PredicateWithMetadataKey.swift +7 -7
  137. package/nitrogen/generated/ios/swift/QuantitySample.swift +574 -27
  138. package/nitrogen/generated/ios/swift/QuantityTypeIdentifier.swift +16 -16
  139. package/nitrogen/generated/ios/swift/QueryCorrelationSamplesWithAnchorResponse.swift +81 -0
  140. package/nitrogen/generated/ios/swift/QueryOptionsWithAnchor.swift +11 -91
  141. package/nitrogen/generated/ios/swift/QueryOptionsWithAnchorAndUnit.swift +11 -91
  142. package/nitrogen/generated/ios/swift/QueryOptionsWithSortOrder.swift +11 -91
  143. package/nitrogen/generated/ios/swift/QueryOptionsWithSortOrderAndUnit.swift +11 -91
  144. package/nitrogen/generated/ios/swift/RelatedCoding.swift +76 -0
  145. package/nitrogen/generated/ios/swift/SampleType.swift +68 -0
  146. package/nitrogen/generated/ios/swift/SampleTypeIdentifier.swift +16 -16
  147. package/nitrogen/generated/ios/swift/SampleTypeIdentifierWriteable.swift +0 -16
  148. package/nitrogen/generated/ios/swift/StateOfMindSample.swift +586 -58
  149. package/nitrogen/generated/ios/swift/StateOfMindSamplesWithAnchorResponse.swift +81 -0
  150. package/nitrogen/generated/ios/swift/StatisticsQueryOptions.swift +7 -75
  151. package/nitrogen/generated/ios/swift/UserAnnotatedMedication.swift +87 -0
  152. package/nitrogen/generated/ios/swift/WeatherCondition.swift +144 -0
  153. package/nitrogen/generated/ios/swift/WorkoutQueryOptions.swift +11 -105
  154. package/nitrogen/generated/ios/swift/WorkoutQueryOptionsWithAnchor.swift +11 -105
  155. package/nitrogen/generated/ios/swift/WorkoutSample.swift +751 -78
  156. package/nitrogen/generated/shared/c++/AggregationStyle.hpp +64 -0
  157. package/nitrogen/generated/shared/c++/CategorySample.hpp +126 -23
  158. package/nitrogen/generated/shared/c++/CorrelationSample.hpp +134 -12
  159. package/nitrogen/generated/shared/c++/{PredicateWithStartAndEnd.hpp → DateFilter.hpp} +10 -10
  160. package/nitrogen/generated/shared/c++/ECGQueryOptionsWithAnchor.hpp +12 -31
  161. package/nitrogen/generated/shared/c++/ECGQueryOptionsWithSortOrder.hpp +12 -31
  162. package/nitrogen/generated/shared/c++/ElectrocardiogramSample.hpp +135 -36
  163. package/nitrogen/generated/shared/c++/FilterForSamples.hpp +124 -0
  164. package/nitrogen/generated/shared/c++/FilterForSamplesBase.hpp +109 -0
  165. package/nitrogen/generated/shared/c++/FilterForWorkouts.hpp +131 -0
  166. package/nitrogen/generated/shared/c++/FilterForWorkoutsBase.hpp +116 -0
  167. package/nitrogen/generated/shared/c++/GeneralForm.hpp +140 -0
  168. package/nitrogen/generated/shared/c++/HeartRateMotionContext.hpp +67 -0
  169. package/nitrogen/generated/shared/c++/HeartbeatSeriesSample.hpp +131 -28
  170. package/nitrogen/generated/shared/c++/HybridCategoryTypeModuleSpec.hpp +1 -2
  171. package/nitrogen/generated/shared/c++/HybridCoreModuleSpec.cpp +1 -0
  172. package/nitrogen/generated/shared/c++/HybridCoreModuleSpec.hpp +10 -28
  173. package/nitrogen/generated/shared/c++/HybridCorrelationTypeModuleSpec.cpp +1 -0
  174. package/nitrogen/generated/shared/c++/HybridCorrelationTypeModuleSpec.hpp +11 -1
  175. package/nitrogen/generated/shared/c++/HybridElectrocardiogramModuleSpec.hpp +1 -2
  176. package/nitrogen/generated/shared/c++/HybridHeartbeatSeriesModuleSpec.hpp +1 -2
  177. package/nitrogen/generated/shared/c++/HybridMedicationModuleSpec.cpp +24 -0
  178. package/nitrogen/generated/shared/c++/HybridMedicationModuleSpec.hpp +80 -0
  179. package/nitrogen/generated/shared/c++/HybridQuantityTypeModuleSpec.cpp +1 -1
  180. package/nitrogen/generated/shared/c++/HybridQuantityTypeModuleSpec.hpp +6 -25
  181. package/nitrogen/generated/shared/c++/HybridStateOfMindModuleSpec.cpp +1 -0
  182. package/nitrogen/generated/shared/c++/HybridStateOfMindModuleSpec.hpp +9 -2
  183. package/nitrogen/generated/shared/c++/HybridWorkoutProxySpec.cpp +33 -5
  184. package/nitrogen/generated/shared/c++/HybridWorkoutProxySpec.hpp +56 -16
  185. package/nitrogen/generated/shared/c++/InsulinDeliveryReason.hpp +62 -0
  186. package/nitrogen/generated/shared/c++/MedicationConcept.hpp +93 -0
  187. package/nitrogen/generated/shared/c++/MedicationDoseEvent.hpp +240 -0
  188. package/nitrogen/generated/shared/c++/MedicationDoseEventLogStatus.hpp +66 -0
  189. package/nitrogen/generated/shared/c++/MedicationDoseEventScheduleType.hpp +62 -0
  190. package/nitrogen/generated/shared/c++/MedicationDoseEventsWithAnchorResponse.hpp +89 -0
  191. package/nitrogen/generated/shared/c++/ObjectTypeIdentifier.hpp +105 -105
  192. package/nitrogen/generated/shared/c++/PredicateWithMetadataKey.hpp +8 -8
  193. package/nitrogen/generated/shared/c++/QuantitySample.hpp +130 -27
  194. package/nitrogen/generated/shared/c++/QuantityTypeIdentifier.hpp +105 -105
  195. package/nitrogen/generated/shared/c++/QueryCorrelationSamplesWithAnchorResponse.hpp +89 -0
  196. package/nitrogen/generated/shared/c++/QueryOptionsWithAnchor.hpp +12 -31
  197. package/nitrogen/generated/shared/c++/QueryOptionsWithAnchorAndUnit.hpp +12 -31
  198. package/nitrogen/generated/shared/c++/QueryOptionsWithSortOrder.hpp +12 -31
  199. package/nitrogen/generated/shared/c++/QueryOptionsWithSortOrderAndUnit.hpp +12 -31
  200. package/nitrogen/generated/shared/c++/RelatedCoding.hpp +84 -0
  201. package/nitrogen/generated/shared/c++/SampleType.hpp +87 -0
  202. package/nitrogen/generated/shared/c++/SampleTypeIdentifier.hpp +105 -105
  203. package/nitrogen/generated/shared/c++/SampleTypeIdentifierWriteable.hpp +105 -121
  204. package/nitrogen/generated/shared/c++/StateOfMindSample.hpp +139 -36
  205. package/nitrogen/generated/shared/c++/StateOfMindSamplesWithAnchorResponse.hpp +89 -0
  206. package/nitrogen/generated/shared/c++/StatisticsQueryOptions.hpp +8 -27
  207. package/nitrogen/generated/shared/c++/UserAnnotatedMedication.hpp +90 -0
  208. package/nitrogen/generated/shared/c++/WeatherCondition.hpp +88 -0
  209. package/nitrogen/generated/shared/c++/WorkoutQueryOptions.hpp +12 -37
  210. package/nitrogen/generated/shared/c++/WorkoutQueryOptionsWithAnchor.hpp +12 -37
  211. package/nitrogen/generated/shared/c++/WorkoutSample.hpp +159 -35
  212. package/package.json +1 -1
  213. package/src/healthkit.ios.ts +30 -0
  214. package/src/healthkit.ts +68 -3
  215. package/src/hooks/useStatisticsForQuantity.ts +1 -1
  216. package/src/hooks/useSubscribeToCategorySamples.ts +31 -0
  217. package/src/modules.ts +4 -0
  218. package/src/specs/CategoryTypeModule.nitro.ts +2 -2
  219. package/src/specs/CoreModule.nitro.ts +3 -0
  220. package/src/specs/CorrelationTypeModule.nitro.ts +11 -3
  221. package/src/specs/ElectrocardiogramModule.nitro.ts +1 -1
  222. package/src/specs/HeartbeatSeriesModule.nitro.ts +1 -1
  223. package/src/specs/MedicationModule.nitro.ts +140 -0
  224. package/src/specs/QuantityTypeModule.nitro.ts +4 -7
  225. package/src/specs/StateOfMindModule.nitro.ts +10 -2
  226. package/src/types/CategoryType.ts +15 -22
  227. package/src/types/Constants.ts +3 -0
  228. package/src/types/CorrelationType.ts +10 -15
  229. package/src/types/ElectrocardiogramSample.ts +2 -14
  230. package/src/types/HeartbeatSeries.ts +2 -15
  231. package/src/types/QuantitySample.ts +2 -8
  232. package/src/types/QuantityType.ts +8 -17
  233. package/src/types/QuantityTypeIdentifier.ts +25 -25
  234. package/src/types/QueryOptions.ts +54 -43
  235. package/src/types/Shared.ts +74 -17
  236. package/src/types/StateOfMind.ts +8 -10
  237. package/src/types/Subscriptions.ts +19 -3
  238. package/src/types/WeatherCondition.ts +1 -1
  239. package/src/types/Workouts.ts +28 -91
  240. package/src/utils/getCategorySampleById.ts +1 -1
  241. package/src/utils/getQuantitySampleById.ts +1 -1
  242. package/src/utils/getWorkoutById.ts +1 -2
  243. package/src/utils/subscribeToCategorySamples.ts +38 -0
  244. package/src/utils/subscribeToQuantitySamples.ts +12 -37
  245. package/nitrogen/generated/ios/swift/FilterForSamplesAnd.swift +0 -94
  246. package/nitrogen/generated/ios/swift/FilterForSamplesOr.swift +0 -94
  247. package/nitrogen/generated/ios/swift/PredicateForSamples.swift +0 -21
  248. package/nitrogen/generated/ios/swift/PredicateForWorkouts.swift +0 -23
  249. package/nitrogen/generated/ios/swift/PredicateForWorkoutsAnd.swift +0 -108
  250. package/nitrogen/generated/ios/swift/PredicateForWorkoutsOr.swift +0 -108
  251. package/nitrogen/generated/ios/swift/PredicateFromWorkout.swift +0 -45
  252. package/nitrogen/generated/ios/swift/PredicateWithMetadataOperator.swift +0 -48
  253. package/nitrogen/generated/ios/swift/PredicateWithUUID.swift +0 -35
  254. package/nitrogen/generated/ios/swift/PredicateWithUUIDs.swift +0 -47
  255. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_FilterForSamplesAnd_FilterForSamplesOr.swift +0 -23
  256. package/nitrogen/generated/ios/swift/Variant_PredicateWithUUID_PredicateWithUUIDs_PredicateWithMetadataKey_PredicateWithStartAndEnd_PredicateFromWorkout_WorkoutActivityTypePredicate_WorkoutDurationPredicate_PredicateForWorkoutsOr_PredicateForWorkoutsAnd.swift +0 -25
  257. package/nitrogen/generated/ios/swift/WorkoutActivityTypePredicate.swift +0 -35
  258. package/nitrogen/generated/shared/c++/FilterForSamplesAnd.hpp +0 -90
  259. package/nitrogen/generated/shared/c++/FilterForSamplesOr.hpp +0 -90
  260. package/nitrogen/generated/shared/c++/PredicateForWorkoutsAnd.hpp +0 -96
  261. package/nitrogen/generated/shared/c++/PredicateForWorkoutsOr.hpp +0 -96
  262. package/nitrogen/generated/shared/c++/PredicateFromWorkout.hpp +0 -77
  263. package/nitrogen/generated/shared/c++/PredicateWithMetadataOperator.hpp +0 -84
  264. package/nitrogen/generated/shared/c++/PredicateWithUUID.hpp +0 -75
  265. package/nitrogen/generated/shared/c++/PredicateWithUUIDs.hpp +0 -76
  266. package/nitrogen/generated/shared/c++/WorkoutActivityTypePredicate.hpp +0 -76
@@ -1,160 +1,214 @@
1
1
  import HealthKit
2
2
  import NitroModules
3
3
 
4
- @available(iOS 18.0, *)
5
- func serializeStateOfMindSample(sample: HKStateOfMind) -> StateOfMindSample {
4
+ #if compiler(>=6)
5
+
6
+ @available(iOS 18.0, *)
7
+ func serializeStateOfMindSample(sample: HKStateOfMind) -> StateOfMindSample {
6
8
  // todo: warn if we get unknown labels??
7
9
  let associations = sample.associations.compactMap { association in
8
- if let association = StateOfMindAssociation(rawValue: Int32(association.rawValue)) {
9
- return association
10
- }
11
- print("[react-native-healthkit] Unknown StateOfMindAssociation raw value: \(association.rawValue)")
10
+ if let association = StateOfMindAssociation(rawValue: Int32(association.rawValue)) {
11
+ return association
12
+ }
13
+
14
+ warnWithPrefix(
15
+ "serializeStateOfMindSample: Unrecognized StateOfMindAssociation rawValue: \(association.rawValue)"
16
+ )
12
17
 
13
- return nil
18
+ return nil
14
19
  }
15
20
 
16
21
  // todo: warn if we get unknown labels??
17
22
  let labels = sample.labels.compactMap { label in
18
- if let label = StateOfMindLabel(rawValue: Int32(label.rawValue)) {
19
- return label
20
- }
23
+ if let label = StateOfMindLabel(rawValue: Int32(label.rawValue)) {
24
+ return label
25
+ }
21
26
 
22
- print("[react-native-healthkit] Unknown StateOfMindLabel raw value: \(label.rawValue)")
23
- return nil
27
+ warnWithPrefix(
28
+ "serializeStateOfMindSample Unrecognized StateOfMindLabel rawValue: \(label.rawValue)")
29
+ return nil
24
30
  }
25
31
 
26
32
  return StateOfMindSample(
27
- uuid: sample.uuid.uuidString,
28
- device: serializeDevice(hkDevice: sample.device),
29
- startDate: sample.startDate,
30
- endDate: sample.endDate,
31
- metadata: serializeMetadata(sample.metadata),
32
- sourceRevision: serializeSourceRevision(sample.sourceRevision),
33
- valence: sample.valence,
34
- // todo: handle better?
35
- kind: StateOfMindKind(rawValue: Int32(sample.kind.rawValue))!,
36
- // todo: handle better?
37
- valenceClassification: StateOfMindValenceClassification(rawValue: Int32(sample.valenceClassification.rawValue))!,
38
- associations: associations,
39
- labels: labels
33
+ valence: sample.valence,
34
+ kind: StateOfMindKind(rawValue: Int32(sample.kind.rawValue))!,
35
+ valenceClassification: StateOfMindValenceClassification(
36
+ rawValue: Int32(sample.valenceClassification.rawValue))!,
37
+ associations: associations,
38
+ labels: labels,
39
+ sampleType: serializeSampleType(sample.sampleType),
40
+ startDate: sample.startDate,
41
+ endDate: sample.endDate,
42
+ hasUndeterminedDuration: sample.hasUndeterminedDuration,
43
+
44
+ metadataWeatherCondition: serializeWeatherCondition(
45
+ sample.metadata?[HKMetadataKeyWeatherCondition] as? HKWeatherCondition),
46
+ metadataWeatherHumidity: serializeUnknownQuantityTyped(
47
+ quantity: sample.metadata?[HKMetadataKeyWeatherHumidity] as? HKQuantity),
48
+ metadataWeatherTemperature: serializeUnknownQuantityTyped(
49
+ quantity: sample.metadata?[HKMetadataKeyWeatherTemperature] as? HKQuantity),
50
+ metadataInsulinDeliveryReason: serializeInsulinDeliveryReason(
51
+ sample.metadata?[HKMetadataKeyInsulinDeliveryReason] as? HKInsulinDeliveryReason),
52
+ metadataHeartRateMotionContext: serializeHeartRateMotionContext(
53
+ sample.metadata?[HKMetadataKeyHeartRateMotionContext] as? HKHeartRateMotionContext),
54
+
55
+ uuid: sample.uuid.uuidString,
56
+ sourceRevision: serializeSourceRevision(sample.sourceRevision),
57
+ device: serializeDevice(hkDevice: sample.device),
58
+ metadata: serializeMetadata(sample.metadata),
59
+
60
+ metadataExternalUUID: sample.metadata?[HKMetadataKeyExternalUUID] as? String,
61
+ metadataTimeZone: sample.metadata?[HKMetadataKeyTimeZone] as? String,
62
+ metadataWasUserEntered: sample.metadata?[HKMetadataKeyWasUserEntered] as? Bool,
63
+ metadataDeviceSerialNumber: sample.metadata?[HKMetadataKeyDeviceSerialNumber] as? String,
64
+ metadataUdiDeviceIdentifier: sample.metadata?[HKMetadataKeyUDIDeviceIdentifier] as? String,
65
+ metadataUdiProductionIdentifier: sample.metadata?[HKMetadataKeyUDIProductionIdentifier]
66
+ as? String,
67
+ metadataDigitalSignature: sample.metadata?[HKMetadataKeyDigitalSignature] as? String,
68
+ metadataDeviceName: sample.metadata?[HKMetadataKeyDeviceName] as? String,
69
+ metadataDeviceManufacturerName: sample.metadata?[HKMetadataKeyDeviceManufacturerName]
70
+ as? String,
71
+ metadataSyncIdentifier: sample.metadata?[HKMetadataKeySyncIdentifier] as? String,
72
+ metadataSyncVersion: sample.metadata?[HKMetadataKeySyncVersion] as? Double,
73
+ metadataWasTakenInLab: sample.metadata?[HKMetadataKeyWasTakenInLab] as? Bool,
74
+ metadataReferenceRangeLowerLimit: sample.metadata?[HKMetadataKeyReferenceRangeLowerLimit]
75
+ as? Double,
76
+ metadataReferenceRangeUpperLimit: sample.metadata?[HKMetadataKeyReferenceRangeUpperLimit]
77
+ as? Double,
78
+ metadataAlgorithmVersion: sample.metadata?[HKMetadataKeyAlgorithmVersion] as? Double
40
79
  )
41
- }
80
+ }
81
+
82
+ class StateOfMindModule: HybridStateOfMindModuleSpec {
83
+ func queryStateOfMindSamplesWithAnchor(options: QueryOptionsWithAnchor) -> Promise<
84
+ StateOfMindSamplesWithAnchorResponse
85
+ > {
86
+ return Promise.async {
87
+ if #available(iOS 18.0, *) {
88
+ let predicate = createPredicateForSamples(options.filter)
89
+
90
+ let response = try await sampleAnchoredQueryAsync(
91
+ sampleType: .stateOfMindType(),
92
+ limit: options.limit,
93
+ queryAnchor: options.anchor,
94
+ predicate: predicate
95
+ )
96
+
97
+ let samples = response.samples.compactMap { sample in
98
+ if let sample = sample as? HKStateOfMind {
99
+ return serializeStateOfMindSample(sample: sample)
100
+ }
101
+ return nil
102
+ }
103
+
104
+ return StateOfMindSamplesWithAnchorResponse(
105
+ samples: samples,
106
+ deletedSamples: response.deletedSamples,
107
+ newAnchor: response.newAnchor
108
+ )
109
+ } else {
110
+ throw runtimeErrorWithPrefix(
111
+ "StateOfMind is only available on iOS 18 and later")
112
+ }
113
+ }
114
+ }
42
115
 
43
- #if compiler(>=6)
44
- class StateOfMindModule: HybridStateOfMindModuleSpec {
45
116
  func queryStateOfMindSamples(
46
- options: QueryOptionsWithSortOrder?
47
- ) throws -> Promise<[StateOfMindSample]> {
117
+ options: QueryOptionsWithSortOrder
118
+ ) -> Promise<[StateOfMindSample]> {
119
+ return Promise.async {
48
120
  if #available(iOS 18.0, *) {
49
- let predicate = try createPredicate(filter: options?.filter)
50
- let queryLimit = getQueryLimit(options?.limit)
51
-
52
- return Promise.async {
53
- try await withCheckedThrowingContinuation { continuation in
54
- let type = HKStateOfMindType.stateOfMindType()
55
-
56
- let query = HKSampleQuery(
57
- sampleType: type,
58
- predicate: predicate,
59
- limit: queryLimit,
60
- sortDescriptors: [
61
- NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: options?.ascending ?? false)
62
- ]
63
- ) { (_: HKSampleQuery, samples: [HKSample]?, error: Error?) in
64
- if let error = error {
65
- continuation.resume(throwing: error)
66
- return
67
- }
68
-
69
- guard let samples = samples as? [HKStateOfMind] else {
70
- return continuation.resume(throwing: RuntimeError.error(withMessage: "[react-native-healthkit] Unexpected empty response"))
71
- }
72
-
73
- let serializedSamples = samples.map { sample -> StateOfMindSample in
74
- return serializeStateOfMindSample(sample: sample)
75
- }
76
-
77
- continuation.resume(returning: serializedSamples)
78
- }
79
-
80
- store.execute(query)
81
- }
121
+ let predicate = createPredicateForSamples(options.filter)
122
+
123
+ return try await sampleQueryAsync(
124
+ sampleType: .stateOfMindType(),
125
+ limit: options.limit,
126
+ predicate: predicate,
127
+ sortDescriptors: getSortDescriptors(ascending: options.ascending)
128
+ ).compactMap { sample in
129
+ if let sample = sample as? HKStateOfMind {
130
+ return serializeStateOfMindSample(sample: sample)
82
131
  }
132
+ return nil
133
+ }
83
134
  } else {
84
- throw RuntimeError.error(withMessage: "StateOfMind is only available on iOS 18 and later")
135
+ throw runtimeErrorWithPrefix(
136
+ "StateOfMind is only available on iOS 18 and later")
85
137
  }
138
+ }
86
139
  }
87
140
 
88
141
  func saveStateOfMindSample(
89
- date: Date,
90
- kind: StateOfMindKind,
91
- valence: Double,
92
- labels: [StateOfMindLabel],
93
- associations: [StateOfMindAssociation],
94
- metadata: AnyMap?
95
- ) throws -> Promise<Bool> {
142
+ date: Date,
143
+ kind: StateOfMindKind,
144
+ valence: Double,
145
+ labels: [StateOfMindLabel],
146
+ associations: [StateOfMindAssociation],
147
+ metadata: AnyMap?
148
+ ) -> Promise<Bool> {
149
+
150
+ return Promise.async {
96
151
  if #available(iOS 18, *) {
97
- return Promise.async {
98
- try await withCheckedThrowingContinuation { continuation in
99
- // Convert enum values to HKStateOfMind types
100
- if let hkKind = HKStateOfMind.Kind.init(rawValue: Int(kind.rawValue)) {
101
- let hkLabels = labels.compactMap {
102
- if let label = HKStateOfMind.Label.init(rawValue: Int($0.rawValue)) {
103
- return label
104
- }
105
- print("[react-native-healthkit] Unknown StateOfMindLabel raw value: \($0.rawValue)")
106
- return nil
107
- }
108
- let hkAssociations = associations.compactMap {
109
- if let association = HKStateOfMind.Association.init(rawValue: Int($0.rawValue)) {
110
- return association
111
- }
112
- print("[react-native-healthkit] Unknown StateOfMindAssociation raw value: \($0.rawValue)")
113
- return nil
114
- }
115
-
116
- let sample = HKStateOfMind(
117
- date: date,
118
- kind: hkKind,
119
- valence: valence,
120
- labels: hkLabels,
121
- associations: hkAssociations,
122
- metadata: anyMapToDictionary(metadata ?? AnyMap())
123
- )
124
-
125
- store.save(sample) { (success: Bool, error: Error?) in
126
- if let error = error {
127
- continuation.resume(throwing: error)
128
- } else {
129
- continuation.resume(returning: success)
130
- }
131
- }
132
- }
133
- }
152
+ // Convert enum values to HKStateOfMind types
153
+ if let hkKind = HKStateOfMind.Kind.init(rawValue: Int(kind.rawValue)) {
154
+ let hkLabels = labels.compactMap {
155
+ if let label = HKStateOfMind.Label.init(rawValue: Int($0.rawValue)) {
156
+ return label
157
+ }
158
+ warnWithPrefix(
159
+ "saveStateOfMindSample: Unknown StateOfMindLabel rawValue: \($0.rawValue), skipping"
160
+ )
161
+ return nil
134
162
  }
135
- } else {
136
- throw RuntimeError.error(withMessage: "StateOfMind is only available on iOS 18 and later")
163
+ let hkAssociations = associations.compactMap {
164
+ if let association = HKStateOfMind.Association.init(rawValue: Int($0.rawValue)) {
165
+ return association
166
+ }
167
+ warnWithPrefix(
168
+ "saveStateOfMindSample: Unknown StateOfMindAssociation rawValue: \($0.rawValue), skipping"
169
+ )
170
+ return nil
171
+ }
172
+
173
+ let sample = HKStateOfMind(
174
+ date: date,
175
+ kind: hkKind,
176
+ valence: valence,
177
+ labels: hkLabels,
178
+ associations: hkAssociations,
179
+ metadata: anyMapToDictionary(metadata ?? AnyMap())
180
+ )
181
+
182
+ return try await saveAsync(sample: sample)
183
+ }
184
+ throw runtimeErrorWithPrefix(
185
+ "saveStateOfMindSample: Unknown StateOfMindKind rawValue: \(kind.rawValue)")
137
186
  }
187
+ throw runtimeErrorWithPrefix("saveStateOfMindSample is only available on iOS 18 and later")
188
+ }
189
+
138
190
  }
139
- }
191
+ }
140
192
  #else
141
- // Fallback for older Xcode versions
142
- class StateOfMind: HybridStateOfMindModuleSpec {
193
+ // Fallback for older Xcode versions
194
+ class StateOfMind: HybridStateOfMindModuleSpec {
143
195
  func queryStateOfMindSamples(
144
- options: QueryOptionsWithSortOrder?
145
- ) throws -> Promise<[StateOfMindSample]> {
146
- throw RuntimeError.error(withMessage: "State of Mind features require iOS 18.0 or later and Xcode 16 or later to compile")
196
+ options: QueryOptionsWithSortOrder
197
+ ) -> Promise<[StateOfMindSample]> {
198
+ throw runtimeErrorWithPrefix(
199
+ "queryStateOfMindSamples requires iOS 18.0 or later and Xcode 16 or later to compile")
147
200
  }
148
201
 
149
202
  func saveStateOfMindSample(
150
- date: Date,
151
- kind: StateOfMindKind,
152
- valence: Double,
153
- labels: [StateOfMindLabel],
154
- associations: [StateOfMindAssociation],
155
- metadata: [String: Any]?
156
- ) throws -> Promise<Bool> {
157
- throw RuntimeError.error(withMessage: "State of Mind features require iOS 18.0 or later and Xcode 16 or later to compile")
203
+ date: Date,
204
+ kind: StateOfMindKind,
205
+ valence: Double,
206
+ labels: [StateOfMindLabel],
207
+ associations: [StateOfMindAssociation],
208
+ metadata: [String: Any]?
209
+ ) -> Promise<Bool> {
210
+ throw runtimeErrorWithPrefix(
211
+ "saveStateOfMindSample requires iOS 18.0 or later and Xcode 16 or later to compile")
158
212
  }
159
- }
213
+ }
160
214
  #endif