@ovok/native 1.5.1 → 1.5.3

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 (184) hide show
  1. package/android/build.gradle +43 -0
  2. package/android/src/main/AndroidManifest.xml +23 -0
  3. package/android/src/main/java/com/ovok/sdk/backgroundsync/BackgroundSyncNotification.java +78 -0
  4. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokBackgroundSyncModule.java +109 -0
  5. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokBackgroundSyncPackage.java +26 -0
  6. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokBluetoothForegroundService.java +28 -0
  7. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokHealthConnectTaskService.java +45 -0
  8. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokHealthConnectWorker.java +28 -0
  9. package/lib/commonjs/index.js +11 -0
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/modules/background-sync/android-background-sync.js +102 -0
  12. package/lib/commonjs/modules/background-sync/android-background-sync.js.map +1 -0
  13. package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js +49 -0
  14. package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -0
  15. package/lib/commonjs/modules/background-sync/index.js +28 -0
  16. package/lib/commonjs/modules/background-sync/index.js.map +1 -0
  17. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +7 -1
  18. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  19. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js +80 -88
  20. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01-frame-parser.js +24 -2
  22. package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01-frame-parser.js.map +1 -1
  23. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +9 -6
  24. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  25. package/lib/commonjs/modules/bt-management/services/devices/uebe/mysense.device.js +16 -0
  26. package/lib/commonjs/modules/bt-management/services/devices/uebe/mysense.device.js.map +1 -1
  27. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js +96 -36
  28. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  29. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js +5 -3
  30. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  31. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js +94 -12
  32. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  33. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js +7 -4
  34. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  35. package/lib/commonjs/modules/data-sync/hooks/use-listen-changes.js +27 -11
  36. package/lib/commonjs/modules/data-sync/hooks/use-listen-changes.js.map +1 -1
  37. package/lib/commonjs/modules/data-sync/index.js +11 -0
  38. package/lib/commonjs/modules/data-sync/index.js.map +1 -1
  39. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +4 -3
  40. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  41. package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js +9 -5
  42. package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
  43. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js +19 -2
  44. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  45. package/lib/commonjs/modules/data-sync/types/health-authorization-status.js +6 -0
  46. package/lib/commonjs/modules/data-sync/types/health-authorization-status.js.map +1 -0
  47. package/lib/module/index.js +1 -0
  48. package/lib/module/index.js.map +1 -1
  49. package/lib/module/modules/background-sync/android-background-sync.js +93 -0
  50. package/lib/module/modules/background-sync/android-background-sync.js.map +1 -0
  51. package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js +44 -0
  52. package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -0
  53. package/lib/module/modules/background-sync/index.js +5 -0
  54. package/lib/module/modules/background-sync/index.js.map +1 -0
  55. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +7 -2
  56. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  57. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js +81 -89
  58. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js.map +1 -1
  59. package/lib/module/modules/bt-management/services/devices/bc01/bc01-frame-parser.js +24 -2
  60. package/lib/module/modules/bt-management/services/devices/bc01/bc01-frame-parser.js.map +1 -1
  61. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +9 -6
  62. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  63. package/lib/module/modules/bt-management/services/devices/uebe/mysense.device.js +16 -0
  64. package/lib/module/modules/bt-management/services/devices/uebe/mysense.device.js.map +1 -1
  65. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js +96 -36
  66. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  67. package/lib/module/modules/data-sync/components/android/android-health-sync.js +5 -3
  68. package/lib/module/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  69. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js +95 -13
  70. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  71. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js +7 -4
  72. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  73. package/lib/module/modules/data-sync/hooks/use-listen-changes.js +27 -10
  74. package/lib/module/modules/data-sync/hooks/use-listen-changes.js.map +1 -1
  75. package/lib/module/modules/data-sync/index.js +1 -0
  76. package/lib/module/modules/data-sync/index.js.map +1 -1
  77. package/lib/module/modules/data-sync/services/base-health-sync-service.js +4 -3
  78. package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  79. package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js +9 -5
  80. package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
  81. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js +19 -2
  82. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  83. package/lib/module/modules/data-sync/types/health-authorization-status.js +4 -0
  84. package/lib/module/modules/data-sync/types/health-authorization-status.js.map +1 -0
  85. package/lib/typescript/commonjs/src/index.d.ts +1 -0
  86. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts +62 -0
  88. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts.map +1 -0
  89. package/lib/typescript/commonjs/src/modules/background-sync/android-bluetooth-foreground-service.d.ts +12 -0
  90. package/lib/typescript/commonjs/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -0
  91. package/lib/typescript/commonjs/src/modules/background-sync/index.d.ts +3 -0
  92. package/lib/typescript/commonjs/src/modules/background-sync/index.d.ts.map +1 -0
  93. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts +11 -4
  96. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +4 -0
  98. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/uebe/mysense.device.d.ts +3 -0
  100. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/uebe/mysense.device.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +8 -0
  102. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  104. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts +1 -1
  106. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts +1 -1
  108. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts +1 -1
  110. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/src/modules/data-sync/components/data-sync.d.ts +4 -4
  112. package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-listen-changes.d.ts +1 -1
  113. package/lib/typescript/commonjs/src/modules/data-sync/hooks/use-listen-changes.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts +1 -0
  115. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts +2 -1
  117. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +4 -4
  119. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts +4 -1
  121. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts +7 -1
  123. package/lib/typescript/commonjs/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts.map +1 -1
  124. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +5 -1
  125. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-sync-props.d.ts +7 -2
  127. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-sync-props.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts +15 -0
  129. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -0
  130. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-props.d.ts +6 -0
  131. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-props.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts +4 -1
  133. package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
  134. package/lib/typescript/module/src/index.d.ts +1 -0
  135. package/lib/typescript/module/src/index.d.ts.map +1 -1
  136. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts +62 -0
  137. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts.map +1 -0
  138. package/lib/typescript/module/src/modules/background-sync/android-bluetooth-foreground-service.d.ts +12 -0
  139. package/lib/typescript/module/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -0
  140. package/lib/typescript/module/src/modules/background-sync/index.d.ts +3 -0
  141. package/lib/typescript/module/src/modules/background-sync/index.d.ts.map +1 -0
  142. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  143. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -1
  144. package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts +11 -4
  145. package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts.map +1 -1
  146. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +4 -0
  147. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  148. package/lib/typescript/module/src/modules/bt-management/services/devices/uebe/mysense.device.d.ts +3 -0
  149. package/lib/typescript/module/src/modules/bt-management/services/devices/uebe/mysense.device.d.ts.map +1 -1
  150. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +8 -0
  151. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  152. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  153. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  154. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts +1 -1
  155. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  156. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts +1 -1
  157. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  158. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts +1 -1
  159. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  160. package/lib/typescript/module/src/modules/data-sync/components/data-sync.d.ts +4 -4
  161. package/lib/typescript/module/src/modules/data-sync/hooks/use-listen-changes.d.ts +1 -1
  162. package/lib/typescript/module/src/modules/data-sync/hooks/use-listen-changes.d.ts.map +1 -1
  163. package/lib/typescript/module/src/modules/data-sync/index.d.ts +1 -0
  164. package/lib/typescript/module/src/modules/data-sync/index.d.ts.map +1 -1
  165. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts +2 -1
  166. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  167. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +4 -4
  168. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
  169. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts +4 -1
  170. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  171. package/lib/typescript/module/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts +7 -1
  172. package/lib/typescript/module/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts.map +1 -1
  173. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +5 -1
  174. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  175. package/lib/typescript/module/src/modules/data-sync/types/apple-health-sync-props.d.ts +7 -2
  176. package/lib/typescript/module/src/modules/data-sync/types/apple-health-sync-props.d.ts.map +1 -1
  177. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts +15 -0
  178. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -0
  179. package/lib/typescript/module/src/modules/data-sync/types/health-sync-props.d.ts +6 -0
  180. package/lib/typescript/module/src/modules/data-sync/types/health-sync-props.d.ts.map +1 -1
  181. package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts +4 -1
  182. package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
  183. package/package.json +6 -3
  184. package/react-native.config.js +11 -0
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","measurementFieldCatalog","bloodPressure","systolic","unit","min","max","required","diastolic","heartRate","bodyWeight","temperature","bodyTemp","bloodGlucose","bloodOxygenPulseRate","bloodOxygen","pulseRate","perfusionIndex","rrInterval","respiratoryRate","uricAcid","uro","display","normalMin","normalMax","bld","bil","ket","glu","pro","ph","nit","leu","sg","vc"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/measurement-field-catalog.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA,OAAO,MAAMC,uBAEZ,GAAG;EACF,CAACD,kBAAkB,CAACE,aAAa,GAAG;IAClCC,QAAQ,EAAE;MAAEC,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DC,SAAS,EAAE;MAAEJ,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC9DE,SAAS,EAAE;MAAEL,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE;IAAI;EAC9C,CAAC;EACD,CAACN,kBAAkB,CAACU,UAAU,GAAG;IAC/BA,UAAU,EAAE;MAAEN,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK;EAC7D,CAAC;EACD,CAACP,kBAAkB,CAACW,WAAW,GAAG;IAChCC,QAAQ,EAAE;MAAER,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAK;EAC5D,CAAC;EACD,CAACP,kBAAkB,CAACa,YAAY,GAAG;IACjCA,YAAY,EAAE;MAAET,IAAI,EAAE,OAAO;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,IAAI;MAAEC,QAAQ,EAAE;IAAK;EACpE,CAAC;EACD,CAACP,kBAAkB,CAACc,oBAAoB,GAAG;IACzCC,WAAW,EAAE;MAAEX,IAAI,EAAE,GAAG;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DS,SAAS,EAAE;MAAEZ,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK,CAAC;IAC7DU,cAAc,EAAE;MAAEb,IAAI,EAAE,GAAG;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAG,CAAC;IAC9CY,UAAU,EAAE;MAAEd,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE,GAAG;MAAEC,GAAG,EAAE;IAAK;EAChD,CAAC;EACD,CAACN,kBAAkB,CAACS,SAAS,GAAG;IAC9BA,SAAS,EAAE;MAAEL,IAAI,EAAE,KAAK;MAAEC,GAAG,EAAE,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEC,QAAQ,EAAE;IAAK;EAC9D,CAAC;EACD,CAACP,kBAAkB,CAACmB,eAAe,GAAG;IACpCA,eAAe,EAAE;MAAEf,IAAI,EAAE,MAAM;MAAEC,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAK;EACnE,CAAC;EACD,CAACP,kBAAkB,CAACoB,QAAQ,GAAG;IAC7BC,GAAG,EAAE;MACHjB,IAAI,EAAE,OAAO;MACbC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,cAAc;MACvBC,SAAS,EAAE,GAAG;MACdC,SAAS,EAAE;IACb,CAAC;IACDC,GAAG,EAAE;MACHrB,IAAI,EAAE,QAAQ;MACdC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,YAAY;MACrBC,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE;IACb,CAAC;IACDE,GAAG,EAAE;MACHtB,IAAI,EAAE,OAAO;MACbC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,WAAW;MACpBC,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE;IACb,CAAC;IACDG,GAAG,EAAE;MACHvB,IAAI,EAAE,OAAO;MACbC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,SAAS;MAClBC,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE;IACb,CAAC;IACDI,GAAG,EAAE;MACHxB,IAAI,EAAE,OAAO;MACbC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,SAAS;MAClBC,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE;IACb,CAAC;IACDK,GAAG,EAAE;MACHzB,IAAI,EAAE,OAAO;MACbC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,SAAS;MAClBC,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE;IACb,CAAC;IACDM,EAAE,EAAE;MACF1B,IAAI,EAAE,IAAI;MACVC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,EAAE;MACPgB,OAAO,EAAE,UAAU;MACnBC,SAAS,EAAE,GAAG;MACdC,SAAS,EAAE;IACb,CAAC;IACDO,GAAG,EAAE;MACH3B,IAAI,EAAE,aAAa;MACnBC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,SAAS;MAClBC,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE;IACb,CAAC;IACDQ,GAAG,EAAE;MACH5B,IAAI,EAAE,QAAQ;MACdC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,oBAAoB;MAC7BC,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE;IACb,CAAC;IACDS,EAAE,EAAE;MACF7B,IAAI,EAAE,kBAAkB;MACxBC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE,kBAAkB;MAC3BC,SAAS,EAAE,KAAK;MAChBC,SAAS,EAAE;IACb,CAAC;IACDU,EAAE,EAAE;MACF9B,IAAI,EAAE,OAAO;MACbC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNgB,OAAO,EAAE;IACX;EACF;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","URINE_ANALYTE_DEFINITIONS","urineAnalyteRanges","uro","min","max","normalMin","normalMax","bld","bil","ket","glu","pro","ph","nit","leu","sg","vc","urineAnalyteCatalog","Object","fromEntries","entries","map","key","range","definition","find","analyte","Error","display","unit","measurementFieldCatalog","bloodPressure","systolic","required","diastolic","heartRate","bodyWeight","temperature","bodyTemp","bloodGlucose","bloodOxygenPulseRate","bloodOxygen","pulseRate","perfusionIndex","rrInterval","respiratoryRate","uricAcid"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/measurement-field-catalog.ts"],"mappings":"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","ignoreList":[]}
@@ -33,6 +33,25 @@ const SECOND_MASK = 0x3f;
33
33
  * field the vendor's own catalog calls "vc" and no other name is documented.
34
34
  */
35
35
  const BC01_ANALYTE_ORDER = ["uro", "bld", "bil", "ket", "glu", "pro", "ph", "nit", "leu", "sg", "vc"];
36
+ /**
37
+ * BC401's packed values are colour-chart indexes, not measurements. These
38
+ * values mirror the tables in Contec's BC401 integration (PHMS M1/a.java):
39
+ * the index is zero-based and `7` remains the device's unmeasured sentinel.
40
+ * The pH table is the URS-7 strip scale, which includes half-point readings.
41
+ */
42
+ const BC01_ANALYTE_VALUES = {
43
+ uro: [0.2, 2, 4, 8],
44
+ bld: [0, 10, 25, 50, 250],
45
+ bil: [0, 1, 3, 6],
46
+ ket: [0, 15, 40, 80],
47
+ glu: [0, 50, 100, 250, 500, 1000],
48
+ pro: [0, 15, 30, 100, 300],
49
+ ph: [5, 6, 6.5, 7, 7.5, 8, 8.5],
50
+ nit: [0, 1],
51
+ leu: [0, 15, 70, 125, 500],
52
+ sg: [1.005, 1.01, 1.015, 1.02, 1.025, 1.03],
53
+ vc: [0, 10, 25, 50, 100]
54
+ };
36
55
 
37
56
  /** Where the packed analyte pairs start in a 16-byte E1/E2 frame. */
38
57
  const ANALYTES_START = 8;
@@ -84,7 +103,10 @@ const parseBc01Record = frame => {
84
103
  if (level === UNMEASURED) {
85
104
  return;
86
105
  }
87
- values[analyte] = level;
106
+ const value = BC01_ANALYTE_VALUES[analyte][level];
107
+ if (value !== undefined) {
108
+ values[analyte] = value;
109
+ }
88
110
  });
89
111
  return {
90
112
  timestamp,
@@ -106,5 +128,5 @@ const isBc01Record = frame => {
106
128
  const opcode = hexToByte(frame[0] ?? "");
107
129
  return opcode === BC01_URS_OPCODE || opcode === BC01_PAGED_URS_OPCODE;
108
130
  };
109
- export { BC01_ANALYTE_ORDER, BC01_LAST_OF_SET_BIT, BC01_PAGED_URS_OPCODE, BC01_RECORD_LENGTH, BC01_URS_OPCODE, isBc01Record, parseBc01Record };
131
+ export { BC01_ANALYTE_ORDER, BC01_ANALYTE_VALUES, BC01_LAST_OF_SET_BIT, BC01_PAGED_URS_OPCODE, BC01_RECORD_LENGTH, BC01_URS_OPCODE, isBc01Record, parseBc01Record };
110
132
  //# sourceMappingURL=bc01-frame-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["hexToByte","BC01_RECORD_LENGTH","BC01_URS_OPCODE","BC01_PAGED_URS_OPCODE","BC01_LAST_OF_SET_BIT","UNMEASURED","YEAR_BASE","MONTH_MASK","DAY_MASK","HOUR_MASK","MINUTE_MASK","SECOND_MASK","BC01_ANALYTE_ORDER","ANALYTES_START","readPad","packed","slot","parseBc01Record","frame","length","undefined","opcode","flags","yy","mm","dd","hh","mi","ss","timestamp","Date","values","forEach","analyte","position","byteIndex","Math","floor","level","lastOfSet","pageIndex","isBc01Record"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01-frame-parser.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["hexToByte","BC01_RECORD_LENGTH","BC01_URS_OPCODE","BC01_PAGED_URS_OPCODE","BC01_LAST_OF_SET_BIT","UNMEASURED","YEAR_BASE","MONTH_MASK","DAY_MASK","HOUR_MASK","MINUTE_MASK","SECOND_MASK","BC01_ANALYTE_ORDER","BC01_ANALYTE_VALUES","uro","bld","bil","ket","glu","pro","ph","nit","leu","sg","vc","ANALYTES_START","readPad","packed","slot","parseBc01Record","frame","length","undefined","opcode","flags","yy","mm","dd","hh","mi","ss","timestamp","Date","values","forEach","analyte","position","byteIndex","Math","floor","level","value","lastOfSet","pageIndex","isBc01Record"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01-frame-parser.ts"],"mappings":"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","ignoreList":[]}
@@ -138,6 +138,9 @@ export class CustomDevice extends BTManagedDevice {
138
138
  return;
139
139
  }
140
140
 
141
+ /** Adds protocol-specific metadata to a validated reading before it is emitted. */
142
+ decorateReading = (reading, _frame, _recordOffset) => reading;
143
+
141
144
  /**
142
145
  * Reports what the frame carried, which may be more than one reading.
143
146
  *
@@ -149,12 +152,12 @@ export class CustomDevice extends BTManagedDevice {
149
152
  reportFrame(data) {
150
153
  const repeated = data.parsingCase.repeatedRecords;
151
154
  if (!repeated || !data.frame) {
152
- this.report(data.parsedData, data.parsingCase);
155
+ this.report(data.parsedData, data.parsingCase, data.frame);
153
156
  return;
154
157
  }
155
158
  const records = Math.floor((data.frame.length - repeated.from) / repeated.recordBytes);
156
159
  for (let record = 0; record < records; record++) {
157
- this.report(parseMeasurement(data.frame, data.parsingCase, repeated.from + record * repeated.recordBytes), data.parsingCase);
160
+ this.report(parseMeasurement(data.frame, data.parsingCase, repeated.from + record * repeated.recordBytes), data.parsingCase, data.frame, repeated.from + record * repeated.recordBytes);
158
161
  }
159
162
  }
160
163
 
@@ -169,18 +172,18 @@ export class CustomDevice extends BTManagedDevice {
169
172
  * A reading that fails its checks is discarded on its own. A temperature the device could
170
173
  * not take is no reason to withhold the heart rate in the same frame.
171
174
  */
172
- report(parsedData, parsingCase) {
175
+ report(parsedData, parsingCase, frame, recordOffset) {
173
176
  const measurements = parsingCase.measurements ?? [];
174
177
  if (measurements.length === 0) {
175
178
  this.discard("a result frame carries no measurement type", parsedData);
176
179
  return;
177
180
  }
178
- measurements.forEach(measurement => this.reportMeasurement(parsedData, measurement));
181
+ measurements.forEach(measurement => this.reportMeasurement(parsedData, measurement, frame, recordOffset));
179
182
  }
180
183
  discard(reason, parsedData) {
181
184
  this.onError?.(discardedReadingError(this.definition.id, reason, parsedData));
182
185
  }
183
- reportMeasurement(parsedData, measurement) {
186
+ reportMeasurement(parsedData, measurement, frame, recordOffset) {
184
187
  const reading = {
185
188
  caseType: parsedData.caseType,
186
189
  measurementTypeKey: measurement.measurementTypeKey
@@ -193,7 +196,7 @@ export class CustomDevice extends BTManagedDevice {
193
196
  this.discard(rejection, reading);
194
197
  return;
195
198
  }
196
- this.onResult?.(reading);
199
+ this.onResult?.(this.decorateReading(reading, frame, recordOffset));
197
200
  }
198
201
  }
199
202
  //# sourceMappingURL=custom.device.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","CaseType","createFrameValidator","parseMeasurement","discardedReadingError","rejectCustomReading","BTManagedDevice","LepuCommandBuilder","LepuFileTransfer","LepuFrameReader","decodeViatomEcgRecording","recordedAtFromViatomFileName","createLepuSequencer","recordLepuIdentity","CustomDevice","validators","Map","constructor","device","params","definition","oneReadingPerConnection","deliveredEcgFileNames","Set","mainServices","stuckDataTimeout","preferredMtu","undefined","declareLepuProtocol","frames","forEach","frame","uuid","set","lepu","frameReader","startBytes","createCommandSequencer","fileTransfer","write","serviceUuid","characteristicUuid","builder","onFile","reportViatomEcgFile","skipFiles","afterTransfer","pollCommand","build","onError","reason","Error","onIdentified","onRefused","onIdentityRefused","file","decoded","content","samples","length","name","onResult","measurementTypeKey","ecg","caseType","RESULT","diagramPoints","duration","recordedAt","recordingId","info","deviceData","id","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","shouldReportDependentResult","reportFrame","error","parsingCase","OTHER","_data","handleSuccessResult","repeated","repeatedRecords","report","parsedData","records","Math","floor","from","recordBytes","record","measurements","discard","measurement","reportMeasurement","reading","fieldNames","rejection","map","fields","find","message"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","CaseType","createFrameValidator","parseMeasurement","discardedReadingError","rejectCustomReading","BTManagedDevice","LepuCommandBuilder","LepuFileTransfer","LepuFrameReader","decodeViatomEcgRecording","recordedAtFromViatomFileName","createLepuSequencer","recordLepuIdentity","CustomDevice","validators","Map","constructor","device","params","definition","oneReadingPerConnection","deliveredEcgFileNames","Set","mainServices","stuckDataTimeout","preferredMtu","undefined","declareLepuProtocol","frames","forEach","frame","uuid","set","lepu","frameReader","startBytes","createCommandSequencer","fileTransfer","write","serviceUuid","characteristicUuid","builder","onFile","reportViatomEcgFile","skipFiles","afterTransfer","pollCommand","build","onError","reason","Error","onIdentified","onRefused","onIdentityRefused","file","decoded","content","samples","length","name","onResult","measurementTypeKey","ecg","caseType","RESULT","diagramPoints","duration","recordedAt","recordingId","info","deviceData","id","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","shouldReportDependentResult","reportFrame","error","parsingCase","OTHER","_data","handleSuccessResult","decorateReading","reading","_frame","_recordOffset","repeated","repeatedRecords","report","parsedData","records","Math","floor","from","recordBytes","record","recordOffset","measurements","discard","measurement","reportMeasurement","fieldNames","rejection","map","fields","find","message"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  import { MeasurementTypeKey } from "@ovok/core";
4
+ import { hexToByte } from "../../../utils/hex-to-byte.js";
4
5
  import { defineCustomDevice } from "../../custom/define-custom-device.js";
5
6
  import { CustomDevice } from "../custom/custom.device.js";
6
7
  import { MySenseFrameReader } from "./mysense.frame-reader.js";
7
8
  import { MySenseSequencer } from "./mysense.sequencer.js";
8
9
  const SERVICE = "0000fff0-0000-1000-8000-00805f9b34fb";
9
10
  const NOTIFY = "0000fff1-0000-1000-8000-00805f9b34fb";
11
+ const recordedAtFromMySenseRecord = record => {
12
+ if (record.length < 5) {
13
+ return undefined;
14
+ }
15
+ const [year, month, day, hour, minute] = record.slice(0, 5).map(byte => hexToByte(byte));
16
+ const recordedAt = new Date(2000 + year, month - 1, day, hour, minute);
17
+ return recordedAt.getFullYear() === 2000 + year && recordedAt.getMonth() === month - 1 && recordedAt.getDate() === day && recordedAt.getHours() === hour && recordedAt.getMinutes() === minute ? recordedAt : undefined;
18
+ };
10
19
  const definition = defineCustomDevice({
11
20
  id: "cyclotest-mysense",
12
21
  nameMatch: "mySense",
@@ -69,5 +78,12 @@ export class MySenseDevice extends CustomDevice {
69
78
  this.reportedHistory = true;
70
79
  return true;
71
80
  };
81
+ decorateReading = (reading, frame, recordOffset = 0) => {
82
+ const recordedAt = frame ? recordedAtFromMySenseRecord(frame.slice(recordOffset, recordOffset + 5)) : undefined;
83
+ return recordedAt ? {
84
+ ...reading,
85
+ recordedAt
86
+ } : reading;
87
+ };
72
88
  }
73
89
  //# sourceMappingURL=mysense.device.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","defineCustomDevice","CustomDevice","MySenseFrameReader","MySenseSequencer","SERVICE","NOTIFY","definition","id","nameMatch","stuckDataTimeoutMs","services","uuid","monitor","frame","minLengthBytes","caseSelectorBytes","cases","selector","kind","description","repeatedRecords","recordBytes","from","measurementTypeKey","temperature","fields","name","byteIndexes","encoding","unit","decimals","MySenseDevice","reportedHistory","constructor","device","params","frameReader","createCommandSequencer","onGreeting","deviceData","sn","slice","join","shouldReportDependentResult","data","parsingCase","caseValue"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/uebe/mysense.device.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAQ/C,SAASC,kBAAkB,QAAQ,sCAAmC;AACtE,SAASC,YAAY,QAAQ,4BAAyB;AAEtD,SAASC,kBAAkB,QAAQ,2BAAwB;AAC3D,SAASC,gBAAgB,QAAQ,wBAAqB;AAEtD,MAAMC,OAAO,GAAG,sCAAsC;AACtD,MAAMC,MAAM,GAAG,sCAAsC;AAMrD,MAAMC,UAAU,GAAGN,kBAAkB,CAAC;EACpCO,EAAE,EAAE,mBAAmB;EACvBC,SAAS,EAAE,SAAS;EACpBC,kBAAkB,EAAE,MAAM;EAC1BC,QAAQ,EAAE,CACR;IACEC,IAAI,EAAEP,OAAO;IACbQ,OAAO,EAAE,CACP;MACED,IAAI,EAAEN,MAAM;MACZQ,KAAK,EAAE;QAAEC,cAAc,EAAE;MAAG,CAAC;MAC7BC,iBAAiB,EAAE,CAAC,CAAC,CAAC;MACtBC,KAAK,EAAE,CACL;QACEC,QAAQ,EAAE,IAAI;QACdC,IAAI,EAAE,MAAM;QACZJ,cAAc,EAAE,EAAE;QAClBK,WAAW,EAAE;MACf,CAAC,EACD;QACEF,QAAQ,EAAE,IAAI;QACdC,IAAI,EAAE,QAAQ;QACdJ,cAAc,EAAE,EAAE;QAClBM,eAAe,EAAE;UAAEC,WAAW,EAAE,CAAC;UAAEC,IAAI,EAAE;QAAE,CAAC;QAC5CC,kBAAkB,EAAExB,kBAAkB,CAACyB,WAAW;QAClDL,WAAW,EAAE,oCAAoC;QACjDM,MAAM,EAAE,CACN;UACEC,IAAI,EAAE,UAAU;UAChBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;UACnBC,QAAQ,EAAE,cAAc;UACxBC,IAAI,EAAE,KAAK;UACXC,QAAQ,EAAE;QACZ,CAAC;MAEL,CAAC;IAEL,CAAC;EAEL,CAAC;AAEL,CAAC,CAAC;AAEF,OAAO,MAAMC,aAAa,SAAS9B,YAAY,CAAC;EACtC+B,eAAe,GAAG,KAAK;EAExBC,WAAWA,CAChBC,MAAc,EACdC,MAAqD,EACrD;IACA,KAAK,CACHD,MAAM,EACNC,MAAM,EACN7B,UACF,CAAC;IAED,IAAI,CAAC8B,WAAW,GAAG,IAAIlC,kBAAkB,CAAC,CAAC;IAC3C,IAAI,CAACmC,sBAAsB,GAAG,MAAM;MAClC,IAAI,CAACL,eAAe,GAAG,KAAK;MAE5B,OAAO,IAAI7B,gBAAgB,CAAC;QAC1BmC,UAAU,EAAGzB,KAAK,IAAK;UACrB,IAAI,CAAC0B,UAAU,CAACC,EAAE,GAAG3B,KAAK,CAAC4B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;QACnD;MACF,CAAC,CAAC;IACJ,CAAC;EACH;EAEUC,2BAA2B,GAAIC,IAAmB,IAAc;IACxE,IAAIA,IAAI,CAACC,WAAW,CAACC,SAAS,KAAK,IAAI,EAAE;MACvC,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAACd,eAAe,EAAE;MACxB,OAAO,KAAK;IACd;IAEA,IAAI,CAACA,eAAe,GAAG,IAAI;IAE3B,OAAO,IAAI;EACb,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","hexToByte","defineCustomDevice","CustomDevice","MySenseFrameReader","MySenseSequencer","SERVICE","NOTIFY","recordedAtFromMySenseRecord","record","length","undefined","year","month","day","hour","minute","slice","map","byte","recordedAt","Date","getFullYear","getMonth","getDate","getHours","getMinutes","definition","id","nameMatch","stuckDataTimeoutMs","services","uuid","monitor","frame","minLengthBytes","caseSelectorBytes","cases","selector","kind","description","repeatedRecords","recordBytes","from","measurementTypeKey","temperature","fields","name","byteIndexes","encoding","unit","decimals","MySenseDevice","reportedHistory","constructor","device","params","frameReader","createCommandSequencer","onGreeting","deviceData","sn","join","shouldReportDependentResult","data","parsingCase","caseValue","decorateReading","reading","recordOffset"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/uebe/mysense.device.ts"],"mappings":"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","ignoreList":[]}
@@ -1,59 +1,121 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from "react";
4
+ import { AppState } from "react-native";
4
5
  import { getGrantedPermissions, initialize, requestPermission } from "react-native-health-connect";
5
6
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
6
- const useHealthConnectAuthorization = (readIdentifiers, writeIdentifiers) => {
7
- const [status, setStatus] = React.useState("shouldRequest");
8
- const requestAuthorization = React.useCallback(async () => {
7
+ const toError = error => error instanceof Error ? error : new Error(String(error));
8
+ const useHealthConnectAuthorization = (readIdentifiers, writeIdentifiers, backgroundAccess = false, onStatusChange) => {
9
+ const [status, setStatus] = React.useState({
10
+ state: "unknown"
11
+ });
12
+ const hasRequestedRef = React.useRef(false);
13
+ const identifiersRef = React.useRef({
14
+ readIdentifiers,
15
+ writeIdentifiers
16
+ });
17
+ const permissionsRef = React.useRef([]);
18
+ identifiersRef.current = {
19
+ readIdentifiers,
20
+ writeIdentifiers
21
+ };
22
+ permissionsRef.current = (() => {
23
+ const readPermissions = identifiersRef.current.readIdentifiers.map(recordType => ({
24
+ accessType: "read",
25
+ recordType
26
+ }));
27
+ const writePermissions = (identifiersRef.current.writeIdentifiers || []).map(recordType => ({
28
+ accessType: "write",
29
+ recordType
30
+ }));
31
+ const backgroundPermissions = backgroundAccess ? [{
32
+ accessType: "read",
33
+ recordType: "BackgroundAccessPermission"
34
+ }] : [];
35
+ return [...readPermissions, ...writePermissions, ...backgroundPermissions];
36
+ })();
37
+ const updateStatus = React.useCallback(nextStatus => {
38
+ setStatus(nextStatus);
39
+ onStatusChange?.(nextStatus);
40
+ }, [onStatusChange]);
41
+ const checkAuthorization = React.useCallback(async () => {
9
42
  try {
10
43
  const isInitialized = await initialize();
11
44
  if (!isInitialized) {
12
- setStatus("error");
45
+ const error = new Error("Health Connect is not available");
46
+ updateStatus({
47
+ state: "error",
48
+ error
49
+ });
13
50
  return;
14
51
  }
15
- const readPermissions = readIdentifiers.map(recordType => ({
16
- accessType: "read",
17
- recordType
18
- }));
19
- const writePermissions = (writeIdentifiers || []).map(recordType => ({
20
- accessType: "write",
21
- recordType
22
- }));
23
- const permissions = [...readPermissions, ...writePermissions];
24
- await requestPermission(permissions);
25
52
  const grantedPermissions = await getGrantedPermissions();
26
- const allGranted = permissions.every(permission => grantedPermissions.some(granted => granted.accessType === permission.accessType && granted.recordType === permission.recordType));
27
- setStatus(allGranted ? "authorized" : "shouldRequest");
28
- } catch {
29
- setStatus("error");
53
+ const allGranted = permissionsRef.current.every(permission => grantedPermissions.some(granted => granted.accessType === permission.accessType && granted.recordType === permission.recordType));
54
+ updateStatus({
55
+ state: allGranted ? "authorized" : hasRequestedRef.current ? "refused" : "shouldRequest"
56
+ });
57
+ } catch (error) {
58
+ updateStatus({
59
+ state: "error",
60
+ error: toError(error)
61
+ });
30
62
  }
31
- }, [readIdentifiers, writeIdentifiers]);
63
+ }, [updateStatus]);
64
+ const requestAuthorization = React.useCallback(async () => {
65
+ hasRequestedRef.current = true;
66
+ updateStatus({
67
+ state: "requesting"
68
+ });
69
+ try {
70
+ const isInitialized = await initialize();
71
+ if (!isInitialized) {
72
+ throw new Error("Health Connect is not available");
73
+ }
74
+ await requestPermission(permissionsRef.current);
75
+ await checkAuthorization();
76
+ } catch (error) {
77
+ updateStatus({
78
+ state: "error",
79
+ error: toError(error)
80
+ });
81
+ }
82
+ }, [checkAuthorization, updateStatus]);
83
+ React.useEffect(() => {
84
+ void checkAuthorization();
85
+ }, [checkAuthorization]);
86
+ React.useEffect(() => {
87
+ const subscription = AppState.addEventListener("change", state => {
88
+ if (state === "active") {
89
+ void checkAuthorization();
90
+ }
91
+ });
92
+ return () => subscription.remove();
93
+ }, [checkAuthorization]);
32
94
  return [status, requestAuthorization];
33
95
  };
34
-
35
- // TODO: add error handling
36
96
  export const AndroidHealthConnectAuthorizationProvider = /*#__PURE__*/React.memo(({
37
97
  readIdentifiers,
38
98
  writeIdentifiers,
39
99
  fallback,
40
100
  children,
41
101
  skipRequest,
42
- renderManualRequestUI
102
+ renderManualRequestUI,
103
+ backgroundAccess,
104
+ onAuthorizationStatusChange
43
105
  }) => {
44
- const [authorizationStatus, requestAuthorization] = useHealthConnectAuthorization(readIdentifiers, writeIdentifiers);
45
- const shouldRenderManualRequestUI = renderManualRequestUI && authorizationStatus === "shouldRequest" && !skipRequest;
46
- const shouldRenderFallback = fallback && authorizationStatus === "shouldRequest" && !skipRequest;
106
+ const [authorizationStatus, requestAuthorization] = useHealthConnectAuthorization(readIdentifiers, writeIdentifiers, backgroundAccess, onAuthorizationStatusChange);
107
+ const shouldRenderManualRequestUI = renderManualRequestUI && ["unknown", "shouldRequest", "refused"].includes(authorizationStatus.state) && !skipRequest;
108
+ const shouldRenderFallback = fallback && ["shouldRequest", "refused", "requesting", "error"].includes(authorizationStatus.state) && !skipRequest;
47
109
  React.useEffect(() => {
48
- if (renderManualRequestUI) {
110
+ if (renderManualRequestUI || skipRequest || authorizationStatus.state !== "shouldRequest") {
49
111
  return;
50
112
  }
51
- if (authorizationStatus === "shouldRequest") {
52
- requestAuthorization();
53
- }
54
- }, [authorizationStatus, requestAuthorization, renderManualRequestUI]);
55
- if (authorizationStatus === "unknown") {
56
- return null;
113
+ void requestAuthorization();
114
+ }, [authorizationStatus.state, renderManualRequestUI, requestAuthorization, skipRequest]);
115
+ if (skipRequest || authorizationStatus.state === "authorized") {
116
+ return /*#__PURE__*/_jsx(_Fragment, {
117
+ children: children
118
+ });
57
119
  }
58
120
  if (shouldRenderManualRequestUI) {
59
121
  return renderManualRequestUI?.(requestAuthorization);
@@ -63,10 +125,8 @@ export const AndroidHealthConnectAuthorizationProvider = /*#__PURE__*/React.memo
63
125
  children: fallback || null
64
126
  });
65
127
  }
66
- if (authorizationStatus === "authorized") {
67
- return /*#__PURE__*/_jsx(_Fragment, {
68
- children: children
69
- });
128
+ if (authorizationStatus.state === "unknown") {
129
+ return null;
70
130
  }
71
131
  return null;
72
132
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","getGrantedPermissions","initialize","requestPermission","Fragment","_Fragment","jsx","_jsx","useHealthConnectAuthorization","readIdentifiers","writeIdentifiers","status","setStatus","useState","requestAuthorization","useCallback","isInitialized","readPermissions","map","recordType","accessType","writePermissions","permissions","grantedPermissions","allGranted","every","permission","some","granted","AndroidHealthConnectAuthorizationProvider","memo","fallback","children","skipRequest","renderManualRequestUI","authorizationStatus","shouldRenderManualRequestUI","shouldRenderFallback","useEffect"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/android/android-health-connect-authorization-provider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","AppState","getGrantedPermissions","initialize","requestPermission","Fragment","_Fragment","jsx","_jsx","toError","error","Error","String","useHealthConnectAuthorization","readIdentifiers","writeIdentifiers","backgroundAccess","onStatusChange","status","setStatus","useState","state","hasRequestedRef","useRef","identifiersRef","permissionsRef","current","readPermissions","map","recordType","accessType","writePermissions","backgroundPermissions","updateStatus","useCallback","nextStatus","checkAuthorization","isInitialized","grantedPermissions","allGranted","every","permission","some","granted","requestAuthorization","useEffect","subscription","addEventListener","remove","AndroidHealthConnectAuthorizationProvider","memo","fallback","children","skipRequest","renderManualRequestUI","onAuthorizationStatusChange","authorizationStatus","shouldRenderManualRequestUI","includes","shouldRenderFallback"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/android/android-health-connect-authorization-provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,7 @@ import { AndroidHealthSyncService } from "../../services/android-health-sync-ser
7
7
  export const AndroidHealthSync = /*#__PURE__*/React.memo(({
8
8
  dataToSync,
9
9
  chunkSize,
10
+ wifiOnly = false,
10
11
  onError,
11
12
  onProgress
12
13
  }) => {
@@ -46,12 +47,13 @@ export const AndroidHealthSync = /*#__PURE__*/React.memo(({
46
47
  if (!serviceRef.current) {
47
48
  return;
48
49
  }
49
- if (!isConnected || type !== "wifi") {
50
- serviceRef.current.pauseSync();
50
+ const pauseReason = isConnected === false ? "offline" : wifiOnly && type !== "wifi" ? "wifi-only" : undefined;
51
+ if (pauseReason) {
52
+ serviceRef.current.pauseSync(pauseReason);
51
53
  return;
52
54
  }
53
55
  serviceRef.current.startSync();
54
- }, [isConnected, type]);
56
+ }, [isConnected, type, wifiOnly]);
55
57
  React.useEffect(() => {
56
58
  onErrorRef.current = onError;
57
59
  onProgressRef.current = onProgress;
@@ -1 +1 @@
1
- {"version":3,"names":["useClient","useMedplumProfile","useNetInfo","React","AndroidHealthSyncService","AndroidHealthSync","memo","dataToSync","chunkSize","onError","onProgress","client","patient","serviceRef","useRef","isConnected","type","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","getInstance","patientId","id","onSyncError","error","startSync","useEffect","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/android/android-health-sync.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useClient","useMedplumProfile","useNetInfo","React","AndroidHealthSyncService","AndroidHealthSync","memo","dataToSync","chunkSize","wifiOnly","onError","onProgress","client","patient","serviceRef","useRef","isConnected","type","onErrorRef","onProgressRef","progressRef","updateProgress","useCallback","progress","current","measurementTypeKey","syncData","getInstance","patientId","id","onSyncError","error","startSync","useEffect","pauseReason","undefined","pauseSync","stopSync"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/android/android-health-sync.tsx"],"mappings":"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","ignoreList":[]}