@ovok/native 1.5.2 → 1.5.4

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 (208) hide show
  1. package/android/src/main/AndroidManifest.xml +1 -0
  2. package/android/src/main/java/com/ovok/sdk/backgroundsync/OvokBackgroundSyncModule.java +54 -0
  3. package/lib/commonjs/modules/background-sync/android-background-sync.js +54 -3
  4. package/lib/commonjs/modules/background-sync/android-background-sync.js.map +1 -1
  5. package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js +16 -9
  6. package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -1
  7. package/lib/commonjs/modules/background-sync/index.js +11 -0
  8. package/lib/commonjs/modules/background-sync/index.js.map +1 -1
  9. package/lib/commonjs/modules/background-sync/notifications.js +56 -0
  10. package/lib/commonjs/modules/background-sync/notifications.js.map +1 -0
  11. package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js +1 -0
  12. package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  13. package/lib/commonjs/modules/bt-device/constants/device-list-items.js +6 -0
  14. package/lib/commonjs/modules/bt-device/constants/device-list-items.js.map +1 -1
  15. package/lib/commonjs/modules/bt-device/constants/supported-device-catalog-assets.js +3 -1
  16. package/lib/commonjs/modules/bt-device/constants/supported-device-catalog-assets.js.map +1 -1
  17. package/lib/commonjs/modules/bt-device/constants/supported-devices.js +16 -1
  18. package/lib/commonjs/modules/bt-device/constants/supported-devices.js.map +1 -1
  19. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +19 -1
  20. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js +1 -1
  22. package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  23. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js +80 -88
  24. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js.map +1 -1
  25. package/lib/commonjs/modules/bt-management/index.js +22 -0
  26. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  27. package/lib/commonjs/modules/bt-management/services/device-creator.js +3 -1
  28. package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
  29. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval-activity-frame-reader.js +55 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval-activity-frame-reader.js.map +1 -0
  31. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.js +202 -0
  32. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.js.map +1 -0
  33. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.activity-device.js +54 -0
  34. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.activity-device.js.map +1 -0
  35. package/lib/commonjs/modules/bt-management/types/integrated-devices.js +1 -0
  36. package/lib/commonjs/modules/bt-management/types/integrated-devices.js.map +1 -1
  37. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js +95 -40
  38. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  39. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js +1 -1
  40. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  41. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-context.js +13 -0
  42. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-context.js.map +1 -0
  43. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js +105 -16
  44. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  45. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js +36 -5
  46. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  47. package/lib/commonjs/modules/data-sync/index.js +11 -0
  48. package/lib/commonjs/modules/data-sync/index.js.map +1 -1
  49. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js +15 -1
  50. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  51. package/lib/commonjs/modules/data-sync/types/health-authorization-status.js +6 -0
  52. package/lib/commonjs/modules/data-sync/types/health-authorization-status.js.map +1 -0
  53. package/lib/module/modules/background-sync/android-background-sync.js +49 -1
  54. package/lib/module/modules/background-sync/android-background-sync.js.map +1 -1
  55. package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js +17 -10
  56. package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -1
  57. package/lib/module/modules/background-sync/index.js +1 -0
  58. package/lib/module/modules/background-sync/index.js.map +1 -1
  59. package/lib/module/modules/background-sync/notifications.js +50 -0
  60. package/lib/module/modules/background-sync/notifications.js.map +1 -0
  61. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js +1 -0
  62. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  63. package/lib/module/modules/bt-device/constants/device-list-items.js +6 -0
  64. package/lib/module/modules/bt-device/constants/device-list-items.js.map +1 -1
  65. package/lib/module/modules/bt-device/constants/supported-device-catalog-assets.js +3 -1
  66. package/lib/module/modules/bt-device/constants/supported-device-catalog-assets.js.map +1 -1
  67. package/lib/module/modules/bt-device/constants/supported-devices.js +17 -2
  68. package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -1
  69. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +20 -2
  70. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  71. package/lib/module/modules/bt-management/constants/integrated-devices-map.js +1 -1
  72. package/lib/module/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  73. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js +81 -89
  74. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js.map +1 -1
  75. package/lib/module/modules/bt-management/index.js +2 -0
  76. package/lib/module/modules/bt-management/index.js.map +1 -1
  77. package/lib/module/modules/bt-management/services/device-creator.js +3 -1
  78. package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
  79. package/lib/module/modules/bt-management/services/devices/veroval/veroval-activity-frame-reader.js +50 -0
  80. package/lib/module/modules/bt-management/services/devices/veroval/veroval-activity-frame-reader.js.map +1 -0
  81. package/lib/module/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.js +198 -0
  82. package/lib/module/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.js.map +1 -0
  83. package/lib/module/modules/bt-management/services/devices/veroval/veroval.activity-device.js +49 -0
  84. package/lib/module/modules/bt-management/services/devices/veroval/veroval.activity-device.js.map +1 -0
  85. package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
  86. package/lib/module/modules/bt-management/types/integrated-devices.js +1 -0
  87. package/lib/module/modules/bt-management/types/integrated-devices.js.map +1 -1
  88. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js +95 -40
  89. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  90. package/lib/module/modules/data-sync/components/android/android-health-sync.js +1 -1
  91. package/lib/module/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  92. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-context.js +8 -0
  93. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-context.js.map +1 -0
  94. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js +106 -17
  95. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  96. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js +36 -5
  97. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  98. package/lib/module/modules/data-sync/index.js +1 -0
  99. package/lib/module/modules/data-sync/index.js.map +1 -1
  100. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js +15 -1
  101. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  102. package/lib/module/modules/data-sync/types/health-authorization-status.js +4 -0
  103. package/lib/module/modules/data-sync/types/health-authorization-status.js.map +1 -0
  104. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts +30 -1
  105. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/src/modules/background-sync/index.d.ts +1 -0
  108. package/lib/typescript/commonjs/src/modules/background-sync/index.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/src/modules/background-sync/notifications.d.ts +14 -0
  110. package/lib/typescript/commonjs/src/modules/background-sync/notifications.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-list-items.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-device-catalog-assets.d.ts +3 -1
  114. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-device-catalog-assets.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts +7 -0
  116. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +2 -0
  121. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval-activity-frame-reader.d.ts +12 -0
  124. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval-activity-frame-reader.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.d.ts +47 -0
  126. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.d.ts.map +1 -0
  127. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.activity-device.d.ts +18 -0
  128. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.activity-device.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +8 -0
  130. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +12 -1
  132. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts +2 -1
  134. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  136. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-context.d.ts +7 -0
  139. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-context.d.ts.map +1 -0
  140. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts +1 -1
  141. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts +3 -1
  143. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/src/modules/data-sync/components/data-sync.d.ts +2 -2
  145. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts +1 -0
  146. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  148. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts +1 -0
  149. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts +3 -0
  151. package/lib/typescript/commonjs/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +5 -1
  153. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts +15 -0
  155. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -0
  156. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts +30 -1
  157. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts.map +1 -1
  158. package/lib/typescript/module/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -1
  159. package/lib/typescript/module/src/modules/background-sync/index.d.ts +1 -0
  160. package/lib/typescript/module/src/modules/background-sync/index.d.ts.map +1 -1
  161. package/lib/typescript/module/src/modules/background-sync/notifications.d.ts +14 -0
  162. package/lib/typescript/module/src/modules/background-sync/notifications.d.ts.map +1 -0
  163. package/lib/typescript/module/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  164. package/lib/typescript/module/src/modules/bt-device/constants/device-list-items.d.ts.map +1 -1
  165. package/lib/typescript/module/src/modules/bt-device/constants/supported-device-catalog-assets.d.ts +3 -1
  166. package/lib/typescript/module/src/modules/bt-device/constants/supported-device-catalog-assets.d.ts.map +1 -1
  167. package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts +7 -0
  168. package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  169. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  170. package/lib/typescript/module/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  171. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -1
  172. package/lib/typescript/module/src/modules/bt-management/index.d.ts +2 -0
  173. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  174. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  175. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval-activity-frame-reader.d.ts +12 -0
  176. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval-activity-frame-reader.d.ts.map +1 -0
  177. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.d.ts +47 -0
  178. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval-activity-sequencer.d.ts.map +1 -0
  179. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.activity-device.d.ts +18 -0
  180. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.activity-device.d.ts.map +1 -0
  181. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +8 -0
  182. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  183. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +12 -1
  184. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  185. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts +2 -1
  186. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  187. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  188. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  189. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  190. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-context.d.ts +7 -0
  191. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-context.d.ts.map +1 -0
  192. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts +1 -1
  193. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  194. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts +3 -1
  195. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  196. package/lib/typescript/module/src/modules/data-sync/components/data-sync.d.ts +2 -2
  197. package/lib/typescript/module/src/modules/data-sync/index.d.ts +1 -0
  198. package/lib/typescript/module/src/modules/data-sync/index.d.ts.map +1 -1
  199. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  200. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts +1 -0
  201. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  202. package/lib/typescript/module/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts +3 -0
  203. package/lib/typescript/module/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts.map +1 -1
  204. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +5 -1
  205. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  206. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts +15 -0
  207. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -0
  208. package/package.json +4 -2
@@ -1,38 +1,127 @@
1
1
  "use strict";
2
2
 
3
- import { HKAuthorizationRequestStatus, useHealthkitAuthorization } from "@kingstinct/react-native-healthkit";
3
+ import { getRequestStatusForAuthorization, HKAuthorizationRequestStatus, useHealthkitAuthorization } from "@kingstinct/react-native-healthkit";
4
4
  import * as React from "react";
5
+ import { AppleHealthAuthorizationContext } from "./apple-health-authorization-context.js";
5
6
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
7
+ const getNotRequestedIdentifiers = async (identifiers, getStatus) => {
8
+ const statuses = await Promise.all(identifiers.map(async identifier => ({
9
+ identifier,
10
+ status: await getStatus(identifier)
11
+ })));
12
+ return statuses.filter(({
13
+ status
14
+ }) => status === HKAuthorizationRequestStatus.shouldRequest).map(({
15
+ identifier
16
+ }) => identifier);
17
+ };
6
18
  export const AppleHealthAuthorizationProvider = /*#__PURE__*/React.memo(({
7
19
  readIdentifiers,
8
20
  writeIdentifiers,
9
21
  fallback,
10
22
  children,
11
23
  skipRequest,
12
- renderManualRequestUI
24
+ renderManualRequestUI,
25
+ onAuthorizationStatusChange
13
26
  }) => {
14
27
  const [authorizationStatus, requestAuthorization] = useHealthkitAuthorization(readIdentifiers, writeIdentifiers);
15
- const shouldRenderManualRequestUI = renderManualRequestUI && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest && !skipRequest;
16
- const shouldRenderFallback = fallback && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest && !skipRequest;
28
+ const [requestState, setRequestState] = React.useState("unknown");
29
+ const [notRequestedReadIdentifiers, setNotRequestedReadIdentifiers] = React.useState(readIdentifiers);
30
+ const [notRequestedWriteIdentifiers, setNotRequestedWriteIdentifiers] = React.useState(writeIdentifiers || []);
31
+ const [requestError, setRequestError] = React.useState();
32
+ const requestKey = `${readIdentifiers.join(",")}::${(writeIdentifiers || []).join(",")}`;
33
+ const identifiersRef = React.useRef({
34
+ readIdentifiers,
35
+ writeIdentifiers
36
+ });
37
+ identifiersRef.current = {
38
+ readIdentifiers,
39
+ writeIdentifiers
40
+ };
41
+ const previousRequestKey = React.useRef(requestKey);
42
+ const status = React.useMemo(() => ({
43
+ error: requestError,
44
+ state: requestState,
45
+ notRequestedReadIdentifiers,
46
+ notRequestedWriteIdentifiers
47
+ }), [notRequestedReadIdentifiers, notRequestedWriteIdentifiers, requestError, requestState]);
48
+ React.useEffect(() => {
49
+ onAuthorizationStatusChange?.(status);
50
+ }, [onAuthorizationStatusChange, status]);
51
+ const inspectAuthorization = React.useCallback(async () => {
52
+ const {
53
+ readIdentifiers: currentRead,
54
+ writeIdentifiers: currentWrite
55
+ } = identifiersRef.current;
56
+ const [notRequestedRead, notRequestedWrite] = await Promise.all([getNotRequestedIdentifiers(currentRead, identifier => getRequestStatusForAuthorization([identifier])), getNotRequestedIdentifiers(currentWrite || [], identifier => getRequestStatusForAuthorization([], [identifier]))]);
57
+ setNotRequestedReadIdentifiers(notRequestedRead);
58
+ setNotRequestedWriteIdentifiers(notRequestedWrite);
59
+ }, []);
60
+ const requestAccess = React.useCallback(async () => {
61
+ setRequestState("requesting");
62
+ try {
63
+ await requestAuthorization();
64
+ await inspectAuthorization();
65
+ setRequestError(undefined);
66
+ setRequestState("ready");
67
+ } catch (error) {
68
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
69
+ setRequestError(normalizedError);
70
+ setRequestState("error");
71
+ }
72
+ }, [inspectAuthorization, requestAuthorization]);
17
73
  React.useEffect(() => {
18
- if (renderManualRequestUI) {
74
+ if (previousRequestKey.current === requestKey) {
19
75
  return;
20
76
  }
21
- requestAuthorization();
22
- }, [readIdentifiers, writeIdentifiers, requestAuthorization, renderManualRequestUI]);
23
- if (!authorizationStatus) {
24
- return null;
25
- }
26
- if (shouldRenderManualRequestUI) {
27
- return renderManualRequestUI?.(requestAuthorization);
28
- }
29
- if (shouldRenderFallback) {
30
- return /*#__PURE__*/_jsx(_Fragment, {
77
+ previousRequestKey.current = requestKey;
78
+ setRequestError(undefined);
79
+ setRequestState(authorizationStatus === null ? "unknown" : authorizationStatus === HKAuthorizationRequestStatus.shouldRequest ? "shouldRequest" : "unknown");
80
+ setNotRequestedReadIdentifiers(readIdentifiers);
81
+ setNotRequestedWriteIdentifiers(writeIdentifiers || []);
82
+ }, [authorizationStatus, readIdentifiers, requestKey, writeIdentifiers]);
83
+ React.useEffect(() => {
84
+ if (authorizationStatus === null) {
85
+ return;
86
+ }
87
+ if (authorizationStatus === HKAuthorizationRequestStatus.shouldRequest) {
88
+ setRequestState(currentState => currentState === "unknown" ? "shouldRequest" : currentState);
89
+ }
90
+ void inspectAuthorization().then(() => {
91
+ setRequestState(currentState => currentState === "unknown" && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest ? "shouldRequest" : currentState === "unknown" ? "ready" : currentState);
92
+ }).catch(error => {
93
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
94
+ setRequestError(normalizedError);
95
+ setRequestState("error");
96
+ });
97
+ }, [authorizationStatus, inspectAuthorization]);
98
+ React.useEffect(() => {
99
+ if (renderManualRequestUI || skipRequest || authorizationStatus !== HKAuthorizationRequestStatus.shouldRequest || requestState !== "shouldRequest") {
100
+ return;
101
+ }
102
+ void requestAccess();
103
+ }, [authorizationStatus, requestAccess, renderManualRequestUI, requestState, skipRequest]);
104
+ const needsAuthorization = requestState === "shouldRequest" || requestState === "requesting" || requestState === "unknown" && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest;
105
+ const shouldRenderManualRequestUI = renderManualRequestUI && needsAuthorization && requestState !== "requesting" && !skipRequest;
106
+ const shouldRenderFallback = fallback && needsAuthorization && !skipRequest;
107
+ let content = null;
108
+ if (skipRequest || requestState === "ready" || requestState === "unknown" && (authorizationStatus === HKAuthorizationRequestStatus.unknown || authorizationStatus === HKAuthorizationRequestStatus.unnecessary)) {
109
+ content = /*#__PURE__*/_jsx(_Fragment, {
110
+ children: children
111
+ });
112
+ } else if (shouldRenderManualRequestUI) {
113
+ content = renderManualRequestUI?.(requestAccess);
114
+ } else if (shouldRenderFallback) {
115
+ content = /*#__PURE__*/_jsx(_Fragment, {
31
116
  children: fallback || null
32
117
  });
33
118
  }
34
- return /*#__PURE__*/_jsx(_Fragment, {
35
- children: children
119
+ return /*#__PURE__*/_jsx(AppleHealthAuthorizationContext.Provider, {
120
+ value: skipRequest && status.state === "unknown" ? {
121
+ ...status,
122
+ state: "ready"
123
+ } : status,
124
+ children: content
36
125
  });
37
126
  });
38
127
  //# sourceMappingURL=apple-health-authorization-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["HKAuthorizationRequestStatus","useHealthkitAuthorization","React","Fragment","_Fragment","jsx","_jsx","AppleHealthAuthorizationProvider","memo","readIdentifiers","writeIdentifiers","fallback","children","skipRequest","renderManualRequestUI","authorizationStatus","requestAuthorization","shouldRenderManualRequestUI","shouldRequest","shouldRenderFallback","useEffect"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"mappings":";;AAAA,SACEA,4BAA4B,EAC5BC,yBAAyB,QACpB,oCAAoC;AAC3C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAI/B,OAAO,MAAMC,gCAAgC,gBAAGL,KAAK,CAACM,IAAI,CACxD,CAAC;EACCC,eAAe;EACfC,gBAAgB;EAChBC,QAAQ;EACRC,QAAQ;EACRC,WAAW;EACXC;AAC8D,CAAC,KAAK;EACpE,MAAM,CAACC,mBAAmB,EAAEC,oBAAoB,CAAC,GAC/Cf,yBAAyB,CAACQ,eAAe,EAAEC,gBAAgB,CAAC;EAE9D,MAAMO,2BAA2B,GAC/BH,qBAAqB,IACrBC,mBAAmB,KAAKf,4BAA4B,CAACkB,aAAa,IAClE,CAACL,WAAW;EAEd,MAAMM,oBAAoB,GACxBR,QAAQ,IACRI,mBAAmB,KAAKf,4BAA4B,CAACkB,aAAa,IAClE,CAACL,WAAW;EAEdX,KAAK,CAACkB,SAAS,CAAC,MAAM;IACpB,IAAIN,qBAAqB,EAAE;MACzB;IACF;IAEAE,oBAAoB,CAAC,CAAC;EACxB,CAAC,EAAE,CACDP,eAAe,EACfC,gBAAgB,EAChBM,oBAAoB,EACpBF,qBAAqB,CACtB,CAAC;EAEF,IAAI,CAACC,mBAAmB,EAAE;IACxB,OAAO,IAAI;EACb;EAEA,IAAIE,2BAA2B,EAAE;IAC/B,OAAOH,qBAAqB,GAAGE,oBAAoB,CAAC;EACtD;EAEA,IAAIG,oBAAoB,EAAE;IACxB,oBAAOb,IAAA,CAAAF,SAAA;MAAAQ,QAAA,EAAGD,QAAQ,IAAI;IAAI,CAAG,CAAC;EAChC;EAEA,oBAAOL,IAAA,CAAAF,SAAA;IAAAQ,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["getRequestStatusForAuthorization","HKAuthorizationRequestStatus","useHealthkitAuthorization","React","AppleHealthAuthorizationContext","Fragment","_Fragment","jsx","_jsx","getNotRequestedIdentifiers","identifiers","getStatus","statuses","Promise","all","map","identifier","status","filter","shouldRequest","AppleHealthAuthorizationProvider","memo","readIdentifiers","writeIdentifiers","fallback","children","skipRequest","renderManualRequestUI","onAuthorizationStatusChange","authorizationStatus","requestAuthorization","requestState","setRequestState","useState","notRequestedReadIdentifiers","setNotRequestedReadIdentifiers","notRequestedWriteIdentifiers","setNotRequestedWriteIdentifiers","requestError","setRequestError","requestKey","join","identifiersRef","useRef","current","previousRequestKey","useMemo","error","state","useEffect","inspectAuthorization","useCallback","currentRead","currentWrite","notRequestedRead","notRequestedWrite","requestAccess","undefined","normalizedError","Error","String","currentState","then","catch","needsAuthorization","shouldRenderManualRequestUI","shouldRenderFallback","content","unknown","unnecessary","Provider","value"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,30 @@ import { useNetInfo } from "@react-native-community/netinfo";
5
5
  import * as React from "react";
6
6
  import { useListenChanges } from "../../hooks/use-listen-changes.js";
7
7
  import { AppleHealthSyncService } from "../../services/apple-health-sync-service.js";
8
- export const AppleHealthSync = /*#__PURE__*/React.memo(({
8
+ import { useAppleHealthAuthorizationStatus } from "./apple-health-authorization-context.js";
9
+ const filterNotRequestedIdentifiers = (dataToSync, notRequestedIdentifiers) => {
10
+ if (notRequestedIdentifiers.length === 0) {
11
+ return dataToSync;
12
+ }
13
+ const excluded = new Set(notRequestedIdentifiers);
14
+ const filtered = {};
15
+ Object.entries(dataToSync).forEach(([key, data]) => {
16
+ if (!data) {
17
+ return;
18
+ }
19
+ const typeIdentifiers = data.typeIdentifiers.filter(({
20
+ typeIdentifier
21
+ }) => !excluded.has(typeIdentifier));
22
+ if (typeIdentifiers.length > 0) {
23
+ filtered[key] = {
24
+ ...data,
25
+ typeIdentifiers
26
+ };
27
+ }
28
+ });
29
+ return filtered;
30
+ };
31
+ const AppleHealthSync = /*#__PURE__*/React.memo(({
9
32
  dataToSync,
10
33
  chunkSize,
11
34
  wifiOnly = false,
@@ -13,6 +36,10 @@ export const AppleHealthSync = /*#__PURE__*/React.memo(({
13
36
  onError,
14
37
  onProgress
15
38
  }) => {
39
+ const authorizationStatus = useAppleHealthAuthorizationStatus();
40
+ const filteredDataToSync = React.useMemo(() => authorizationStatus?.state === "ready" ? filterNotRequestedIdentifiers(dataToSync, authorizationStatus.notRequestedReadIdentifiers) : dataToSync, [authorizationStatus, dataToSync]);
41
+ const authorizationPending = authorizationStatus?.state === "unknown";
42
+ const effectiveDataToSync = React.useMemo(() => authorizationPending ? {} : filteredDataToSync, [authorizationPending, filteredDataToSync]);
16
43
  const client = useClient();
17
44
  const patient = useMedplumProfile();
18
45
  const serviceRef = React.useRef(null);
@@ -28,11 +55,14 @@ export const AppleHealthSync = /*#__PURE__*/React.memo(({
28
55
  onProgressRef.current?.(progressRef.current);
29
56
  }, []);
30
57
  const syncData = React.useCallback(async () => {
58
+ if (authorizationPending) {
59
+ return;
60
+ }
31
61
  try {
32
62
  serviceRef.current = AppleHealthSyncService.getInstance({
33
63
  client,
34
64
  patientId: patient?.id ?? "",
35
- dataToSync,
65
+ dataToSync: effectiveDataToSync,
36
66
  chunkSize,
37
67
  onSyncError: error => onErrorRef.current?.(error),
38
68
  updateProgress
@@ -41,7 +71,7 @@ export const AppleHealthSync = /*#__PURE__*/React.memo(({
41
71
  } catch (error) {
42
72
  onErrorRef.current?.(error);
43
73
  }
44
- }, [client, dataToSync, chunkSize, patient?.id, updateProgress]);
74
+ }, [authorizationPending, client, effectiveDataToSync, chunkSize, patient?.id, updateProgress]);
45
75
 
46
76
  /**
47
77
  * The first sync, which nothing used to start.
@@ -64,14 +94,14 @@ export const AppleHealthSync = /*#__PURE__*/React.memo(({
64
94
  React.useEffect(() => {
65
95
  syncData();
66
96
  }, [syncData]);
67
- useListenChanges(dataToSync, () => {
97
+ useListenChanges(effectiveDataToSync, () => {
68
98
  syncData();
69
99
  }, backgroundDelivery, error => onErrorRef.current?.(error));
70
100
  React.useEffect(() => {
71
101
  if (!serviceRef.current) {
72
102
  return;
73
103
  }
74
- const pauseReason = !isConnected ? "offline" : wifiOnly && type !== "wifi" ? "wifi-only" : undefined;
104
+ const pauseReason = isConnected === false ? "offline" : wifiOnly && type !== "wifi" ? "wifi-only" : undefined;
75
105
  if (pauseReason) {
76
106
  serviceRef.current.pauseSync(pauseReason);
77
107
  return;
@@ -100,4 +130,5 @@ export const AppleHealthSync = /*#__PURE__*/React.memo(({
100
130
  }, []);
101
131
  return null;
102
132
  });
133
+ export { AppleHealthSync, filterNotRequestedIdentifiers };
103
134
  //# sourceMappingURL=apple-health-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useClient","useMedplumProfile","useNetInfo","React","useListenChanges","AppleHealthSyncService","AppleHealthSync","memo","dataToSync","chunkSize","wifiOnly","backgroundDelivery","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/apple/apple-health-sync.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useClient","useMedplumProfile","useNetInfo","React","useListenChanges","AppleHealthSyncService","useAppleHealthAuthorizationStatus","filterNotRequestedIdentifiers","dataToSync","notRequestedIdentifiers","length","excluded","Set","filtered","Object","entries","forEach","key","data","typeIdentifiers","filter","typeIdentifier","has","AppleHealthSync","memo","chunkSize","wifiOnly","backgroundDelivery","onError","onProgress","authorizationStatus","filteredDataToSync","useMemo","state","notRequestedReadIdentifiers","authorizationPending","effectiveDataToSync","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/apple/apple-health-sync.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,4 +5,5 @@ export * from "./types/apple-health-sync-props.js";
5
5
  export * from "./components/sync-progress-list/sync-progress-list.js";
6
6
  export * from "./types/sync-progress.js";
7
7
  export * from "./types/android-health-sync-props.js";
8
+ export * from "./types/health-authorization-status.js";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/data-sync/index.ts"],"mappings":";;AAAA,cAAc,2BAAwB;AACtC,cAAc,oCAAiC;AAC/C,cAAc,uDAAoD;AAClE,cAAc,0BAAuB;AACrC,cAAc,sCAAmC","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/data-sync/index.ts"],"mappings":";;AAAA,cAAc,2BAAwB;AACtC,cAAc,oCAAiC;AAC/C,cAAc,uDAAoD;AAClE,cAAc,0BAAuB;AACrC,cAAc,sCAAmC;AACjD,cAAc,wCAAqC","ignoreList":[]}
@@ -12,6 +12,7 @@ export class SyncStateManager {
12
12
  * because the read cursor only advances once a read has returned.
13
13
  */
14
14
 
15
+ rerunRequested = false;
15
16
  shouldStopSync = false;
16
17
  initialDataFetched = false;
17
18
  latestObservationDates = [];
@@ -22,7 +23,19 @@ export class SyncStateManager {
22
23
 
23
24
  /** Runs `sync`, or joins the run already under way. */
24
25
  async once(sync) {
25
- this.inFlight ??= sync().finally(() => {
26
+ if (this.inFlight) {
27
+ if (this.shouldStopSync) {
28
+ this.rerunRequested = true;
29
+ }
30
+ const inFlight = this.inFlight;
31
+ await inFlight;
32
+ if (this.rerunRequested && !this.inFlight) {
33
+ this.rerunRequested = false;
34
+ return this.once(sync);
35
+ }
36
+ return;
37
+ }
38
+ this.inFlight = sync().finally(() => {
26
39
  this.inFlight = undefined;
27
40
  });
28
41
  return this.inFlight;
@@ -33,6 +46,7 @@ export class SyncStateManager {
33
46
  this.initialDataFetched = false;
34
47
  this.latestObservationDates = [];
35
48
  this.results = [];
49
+ this.rerunRequested = false;
36
50
  }
37
51
  pause(reason) {
38
52
  this.shouldStopSync = true;
@@ -1 +1 @@
1
- {"version":3,"names":["SyncStateManager","shouldStopSync","initialDataFetched","latestObservationDates","results","addResult","result","push","once","sync","inFlight","finally","undefined","reset","pauseReason","pause","reason","resume"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-state-manager.ts"],"mappings":";;AAIA,OAAO,MAAMA,gBAAgB,CAAC;EAC5B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAGSC,cAAc,GAAG,KAAK;EAEtBC,kBAAkB,GAAG,KAAK;EAC1BC,sBAAsB,GAGxB,EAAE;EACAC,OAAO,GAA0B,EAAE;EAE1CC,SAASA,CAACC,MAA2B,EAAQ;IAC3C,IAAI,CAACF,OAAO,CAACG,IAAI,CAACD,MAAM,CAAC;EAC3B;;EAEA;EACA,MAAME,IAAIA,CAACC,IAAyB,EAAiB;IACnD,IAAI,CAACC,QAAQ,KAAKD,IAAI,CAAC,CAAC,CAACE,OAAO,CAAC,MAAM;MACrC,IAAI,CAACD,QAAQ,GAAGE,SAAS;IAC3B,CAAC,CAAC;IAEF,OAAO,IAAI,CAACF,QAAQ;EACtB;EAEAG,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACZ,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACa,WAAW,GAAGF,SAAS;IAC5B,IAAI,CAACV,kBAAkB,GAAG,KAAK;IAC/B,IAAI,CAACC,sBAAsB,GAAG,EAAE;IAChC,IAAI,CAACC,OAAO,GAAG,EAAE;EACnB;EAEAW,KAAKA,CAACC,MAAwB,EAAQ;IACpC,IAAI,CAACf,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACa,WAAW,GAAGE,MAAM;EAC3B;EAEAC,MAAMA,CAAA,EAAS;IACb,IAAI,CAAChB,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACa,WAAW,GAAGF,SAAS;EAC9B;AACF","ignoreList":[]}
1
+ {"version":3,"names":["SyncStateManager","rerunRequested","shouldStopSync","initialDataFetched","latestObservationDates","results","addResult","result","push","once","sync","inFlight","finally","undefined","reset","pauseReason","pause","reason","resume"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-state-manager.ts"],"mappings":";;AAIA,OAAO,MAAMA,gBAAgB,CAAC;EAC5B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEUC,cAAc,GAAG,KAAK;EAEvBC,cAAc,GAAG,KAAK;EAEtBC,kBAAkB,GAAG,KAAK;EAC1BC,sBAAsB,GAGxB,EAAE;EACAC,OAAO,GAA0B,EAAE;EAE1CC,SAASA,CAACC,MAA2B,EAAQ;IAC3C,IAAI,CAACF,OAAO,CAACG,IAAI,CAACD,MAAM,CAAC;EAC3B;;EAEA;EACA,MAAME,IAAIA,CAACC,IAAyB,EAAiB;IACnD,IAAI,IAAI,CAACC,QAAQ,EAAE;MACjB,IAAI,IAAI,CAACT,cAAc,EAAE;QACvB,IAAI,CAACD,cAAc,GAAG,IAAI;MAC5B;MAEA,MAAMU,QAAQ,GAAG,IAAI,CAACA,QAAQ;MAE9B,MAAMA,QAAQ;MAEd,IAAI,IAAI,CAACV,cAAc,IAAI,CAAC,IAAI,CAACU,QAAQ,EAAE;QACzC,IAAI,CAACV,cAAc,GAAG,KAAK;QAE3B,OAAO,IAAI,CAACQ,IAAI,CAACC,IAAI,CAAC;MACxB;MAEA;IACF;IAEA,IAAI,CAACC,QAAQ,GAAGD,IAAI,CAAC,CAAC,CAACE,OAAO,CAAC,MAAM;MACnC,IAAI,CAACD,QAAQ,GAAGE,SAAS;IAC3B,CAAC,CAAC;IAEF,OAAO,IAAI,CAACF,QAAQ;EACtB;EAEAG,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACZ,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACa,WAAW,GAAGF,SAAS;IAC5B,IAAI,CAACV,kBAAkB,GAAG,KAAK;IAC/B,IAAI,CAACC,sBAAsB,GAAG,EAAE;IAChC,IAAI,CAACC,OAAO,GAAG,EAAE;IACjB,IAAI,CAACJ,cAAc,GAAG,KAAK;EAC7B;EAEAe,KAAKA,CAACC,MAAwB,EAAQ;IACpC,IAAI,CAACf,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACa,WAAW,GAAGE,MAAM;EAC3B;EAEAC,MAAMA,CAAA,EAAS;IACb,IAAI,CAAChB,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACa,WAAW,GAAGF,SAAS;EAC9B;AACF","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=health-authorization-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-authorization-status.ts"],"mappings":"","ignoreList":[]}
@@ -1,8 +1,13 @@
1
+ import { MeasurementTypeKey, OvokClient } from "@ovok/core";
2
+ import { AndroidHealthSyncProps } from "../data-sync/types/android-health-sync-props";
3
+ import { SyncProgress } from "../data-sync/types/sync-progress";
1
4
  declare const ANDROID_HEALTH_CONNECT_BACKGROUND_TASK = "OvokHealthConnectBackgroundSync";
2
5
  interface AndroidBluetoothForegroundServiceOptions {
3
6
  /** Text shown while the service keeps the BLE scan alive. */
4
7
  notificationTitle?: string;
5
8
  notificationBody?: string;
9
+ /** Ask Android to exempt this app from Doze when the service starts. Defaults to false. */
10
+ requestBatteryOptimizationExemption?: boolean;
6
11
  }
7
12
  interface AndroidHealthConnectBackgroundSyncOptions {
8
13
  /** WorkManager's minimum supported interval is 15 minutes. */
@@ -15,6 +20,17 @@ interface AndroidHealthConnectBackgroundSyncOptions {
15
20
  type AndroidHealthConnectBackgroundTask = (input: {
16
21
  reason?: string;
17
22
  }) => Promise<void>;
23
+ type AndroidHealthConnectSyncRunOptions = {
24
+ /** A restored, authenticated core client. */
25
+ client: OvokClient;
26
+ /** The patient whose Health Connect records should be imported. */
27
+ patientId: string;
28
+ /** The same record-to-Observation mapping used by AndroidHealthSync. */
29
+ dataToSync: AndroidHealthSyncProps["dataToSync"];
30
+ chunkSize?: number;
31
+ onError?: (error: Error) => void;
32
+ onProgress?: (progress: Partial<Record<MeasurementTypeKey, SyncProgress>>) => void;
33
+ };
18
34
  /**
19
35
  * Starts the Android connected-device foreground service. Mount this alongside
20
36
  * the BTProvider that owns the scan; the service keeps that app process alive
@@ -22,6 +38,10 @@ type AndroidHealthConnectBackgroundTask = (input: {
22
38
  */
23
39
  declare const startAndroidBluetoothForegroundService: (options?: AndroidBluetoothForegroundServiceOptions) => Promise<void>;
24
40
  declare const stopAndroidBluetoothForegroundService: () => Promise<void>;
41
+ /** Returns whether Android currently exempts the app from Doze battery optimizations. */
42
+ declare const isAndroidBatteryOptimizationIgnored: () => Promise<boolean>;
43
+ /** Opens Android's consent screen for a Doze exemption. This is always explicit opt-in. */
44
+ declare const requestAndroidBatteryOptimizationExemption: () => Promise<boolean>;
25
45
  /**
26
46
  * Schedules a WorkManager wake-up that starts the registered headless JS task.
27
47
  * The task must create the host app's authenticated client and run the desired
@@ -29,11 +49,20 @@ declare const stopAndroidBluetoothForegroundService: () => Promise<void>;
29
49
  */
30
50
  declare const scheduleAndroidHealthConnectSync: (options?: AndroidHealthConnectBackgroundSyncOptions) => Promise<void>;
31
51
  declare const cancelAndroidHealthConnectSync: () => Promise<void>;
52
+ /**
53
+ * Runs one Health Connect import without mounting React components.
54
+ *
55
+ * Headless JS tasks have no React tree, so AndroidHealthSync cannot be rendered
56
+ * after the OS recreates the app process. The host app still restores its own
57
+ * client and patient identity, then calls this function with the same mapping
58
+ * it uses in the foreground.
59
+ */
60
+ declare const runAndroidHealthConnectSync: ({ client, patientId, dataToSync, chunkSize, onError, onProgress, }: AndroidHealthConnectSyncRunOptions) => Promise<void>;
32
61
  /**
33
62
  * Registers the JS entry point WorkManager invokes after process death. Call
34
63
  * this once from the app entry point, not from a screen component, so it is
35
64
  * registered before Android wakes the headless runtime.
36
65
  */
37
66
  declare const registerAndroidHealthConnectBackgroundTask: (task: AndroidHealthConnectBackgroundTask, taskName?: string) => void;
38
- export { ANDROID_HEALTH_CONNECT_BACKGROUND_TASK, AndroidBluetoothForegroundServiceOptions, AndroidHealthConnectBackgroundSyncOptions, AndroidHealthConnectBackgroundTask, cancelAndroidHealthConnectSync, registerAndroidHealthConnectBackgroundTask, scheduleAndroidHealthConnectSync, startAndroidBluetoothForegroundService, stopAndroidBluetoothForegroundService, };
67
+ export { ANDROID_HEALTH_CONNECT_BACKGROUND_TASK, AndroidBluetoothForegroundServiceOptions, AndroidHealthConnectBackgroundSyncOptions, AndroidHealthConnectBackgroundTask, AndroidHealthConnectSyncRunOptions, cancelAndroidHealthConnectSync, isAndroidBatteryOptimizationIgnored, registerAndroidHealthConnectBackgroundTask, requestAndroidBatteryOptimizationExemption, runAndroidHealthConnectSync, scheduleAndroidHealthConnectSync, startAndroidBluetoothForegroundService, stopAndroidBluetoothForegroundService, };
39
68
  //# sourceMappingURL=android-background-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"android-background-sync.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/background-sync/android-background-sync.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,sCAAsC,oCACT,CAAC;AAapC,UAAU,wCAAwC;IAEhD,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,yCAAyC;IAEjD,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,KAAK,kCAAkC,GAAG,CAAC,KAAK,EAAE;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAgBpB;;;;GAIG;AACH,QAAA,MAAM,sCAAsC,GAC1C,UAAS,wCAA6C,KACrD,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,QAAA,MAAM,qCAAqC,QAAa,OAAO,CAAC,IAAI,CAMnE,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,gCAAgC,GACpC,UAAS,yCAA8C,KACtD,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,QAAA,MAAM,8BAA8B,QAAa,OAAO,CAAC,IAAI,CAM5D,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,0CAA0C,GAC9C,MAAM,kCAAkC,EACxC,iBAAiD,KAChD,IAMF,CAAC;AAEF,OAAO,EACL,sCAAsC,EACtC,wCAAwC,EACxC,yCAAyC,EACzC,kCAAkC,EAClC,8BAA8B,EAC9B,0CAA0C,EAC1C,gCAAgC,EAChC,sCAAsC,EACtC,qCAAqC,GACtC,CAAC"}
1
+ {"version":3,"file":"android-background-sync.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/background-sync/android-background-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,QAAA,MAAM,sCAAsC,oCACT,CAAC;AAepC,UAAU,wCAAwC;IAEhD,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,2FAA2F;IAC3F,mCAAmC,CAAC,EAAE,OAAO,CAAC;CAC/C;AAED,UAAU,yCAAyC;IAEjD,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,KAAK,kCAAkC,GAAG,CAAC,KAAK,EAAE;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpB,KAAK,kCAAkC,GAAG;IAExC,6CAA6C;IAC7C,MAAM,EAAE,UAAU,CAAC;IAEnB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAElB,wEAAwE;IACxE,UAAU,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,CACX,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,KACxD,IAAI,CAAC;CACX,CAAC;AAgBF;;;;GAIG;AACH,QAAA,MAAM,sCAAsC,GAC1C,UAAS,wCAA6C,KACrD,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,QAAA,MAAM,qCAAqC,QAAa,OAAO,CAAC,IAAI,CAMnE,CAAC;AAEF,yFAAyF;AACzF,QAAA,MAAM,mCAAmC,QAAa,OAAO,CAAC,OAAO,CAMpE,CAAC;AAEF,2FAA2F;AAC3F,QAAA,MAAM,0CAA0C,QAAa,OAAO,CAAC,OAAO,CAM3E,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,gCAAgC,GACpC,UAAS,yCAA8C,KACtD,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,QAAA,MAAM,8BAA8B,QAAa,OAAO,CAAC,IAAI,CAM5D,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,2BAA2B,GAAU,oEAOxC,kCAAkC,KAAG,OAAO,CAAC,IAAI,CAgBnD,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,0CAA0C,GAC9C,MAAM,kCAAkC,EACxC,iBAAiD,KAChD,IAMF,CAAC;AAEF,OAAO,EACL,sCAAsC,EACtC,wCAAwC,EACxC,yCAAyC,EACzC,kCAAkC,EAClC,kCAAkC,EAClC,8BAA8B,EAC9B,mCAAmC,EACnC,0CAA0C,EAC1C,0CAA0C,EAC1C,2BAA2B,EAC3B,gCAAgC,EAChC,sCAAsC,EACtC,qCAAqC,GACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"android-bluetooth-foreground-service.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/background-sync/android-bluetooth-foreground-service.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAE3E,OAAO,EAGL,KAAK,wCAAwC,EAC9C,MAAM,2BAA2B,CAAC;AAEnC,UAAU,sCAAsC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,wCAAwC,CAAC;IACnD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACzC;AAED,QAAA,MAAM,iCAAiC,GAAI,0CAKxC,sCAAsC,sBA4BxC,CAAC;AAEF,OAAO,EAAE,iCAAiC,EAAE,CAAC"}
1
+ {"version":3,"file":"android-bluetooth-foreground-service.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/background-sync/android-bluetooth-foreground-service.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAE3E,OAAO,EAIL,KAAK,wCAAwC,EAC9C,MAAM,2BAA2B,CAAC;AAEnC,UAAU,sCAAsC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,wCAAwC,CAAC;IACnD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACzC;AAED,QAAA,MAAM,iCAAiC,GAAI,0CAKxC,sCAAsC,sBA6CxC,CAAC;AAEF,OAAO,EAAE,iCAAiC,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from "./android-background-sync";
2
2
  export * from "./android-bluetooth-foreground-service";
3
+ export * from "./notifications";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/background-sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/background-sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wCAAwC,CAAC;AACvD,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ type PushNotificationPermissionStatus = "granted" | "denied" | "undetermined";
2
+ interface PushNotificationContent {
3
+ title: string;
4
+ body?: string;
5
+ data?: Record<string, string | number | boolean | null>;
6
+ }
7
+ /** Reads the current notification permission without showing a prompt. */
8
+ declare const getPushNotificationPermission: () => Promise<PushNotificationPermissionStatus>;
9
+ /** Requests notification permission. Call this while the app is in the foreground. */
10
+ declare const requestPushNotificationPermission: () => Promise<PushNotificationPermissionStatus>;
11
+ /** Shows a local notification for a measurement delivered by the background queue. */
12
+ declare const showPushNotification: ({ title, body, data, }: PushNotificationContent) => Promise<void>;
13
+ export { getPushNotificationPermission, PushNotificationContent, PushNotificationPermissionStatus, requestPushNotificationPermission, showPushNotification, };
14
+ //# sourceMappingURL=notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/background-sync/notifications.ts"],"names":[],"mappings":"AAEA,KAAK,gCAAgC,GACjC,SAAS,GACT,QAAQ,GACR,cAAc,CAAC;AAEnB,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CACzD;AAgCD,0EAA0E;AAC1E,QAAA,MAAM,6BAA6B,QAAa,OAAO,CAAC,gCAAgC,CACzB,CAAC;AAEhE,sFAAsF;AACtF,QAAA,MAAM,iCAAiC,QAAa,OAAO,CAAC,gCAAgC,CACzB,CAAC;AAEpE,sFAAsF;AACtF,QAAA,MAAM,oBAAoB,GAAU,wBAIjC,uBAAuB,KAAG,OAAO,CAAC,IAAI,CASxC,CAAC;AAEF,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,gCAAgC,EAChC,iCAAiC,EACjC,oBAAoB,GACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"device-instruction-pdfs.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/device-instruction-pdfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAOjF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAuBrE,CAAC"}
1
+ {"version":3,"file":"device-instruction-pdfs.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/device-instruction-pdfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAOjF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAwBrE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"device-list-items.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/device-list-items.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI3D,eAAO,MAAM,eAAe,EAAE,cAAc,EAsJ3C,CAAC"}
1
+ {"version":3,"file":"device-list-items.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/device-list-items.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI3D,eAAO,MAAM,eAAe,EAAE,cAAc,EA8J3C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  declare const verovalBpu26Image = "https://cdn.hartmann.info/product/40938_43.jpg";
2
2
  declare const verovalBpw26Image = "https://cdn.hartmann.info/product/40385_43.jpg";
3
+ declare const verovalActivityImage = "https://image-eo.winudf.com/v2/image/aW5mby52ZXJvdmFsLm1lZGkuY29ubmVjdF9pY29uXzE1MzUwMTcwMDVfMDYx/icon.png?w=360&fakeurl=1";
3
4
  declare const bosoMedicusSystemImage = "https://www.boso.de/fileadmin/_processed_/0/b/csm_medicus_system_1019_9ce057ffcc.png";
4
5
  declare const visomatComfortSoftBtImage = "https://www.visomat.de/wp-content/uploads/2023/10/prd_slider_comfort-soft-BT.jpg";
5
6
  declare const cyclotestMySenseImage = "https://www.cyclotest.de/wp-content/uploads/cyclotest-mysense-basalthermometer-app-unfruchtbar-flex.png";
@@ -14,6 +15,7 @@ declare const hartmannDuoControlCredit = "HARTMANN official product image: https
14
15
  declare const hartmannEcgCredit = "HARTMANN official product image: https://www.hartmann.info/es-es/productos/monitorizaci%C3%B3n/electrocardiograma/veroval%C2%AE-ecg";
15
16
  declare const hartmannBpu26Credit = "HARTMANN official product image: https://www.hartmann.info/en/products/diagnostics/blood-pressure-monitors/upper-arm-products/veroval%C2%AE-compact-%2C-pl-%2C-upper-arm-blood-pressure-monitor";
16
17
  declare const hartmannBpw26Credit = "HARTMANN official product image: https://www.hartmann.info/en/products/diagnostics/blood-pressure-monitors/wrist-products/veroval%C2%AE-compact-%2C-pl-%2C-wrist-blood-pressure-monitor";
18
+ declare const hartmannActivityCredit = "Veroval Medi.Connect app artwork from APKPure: https://apkpure.net/veroval%C2%AE-medi-connect/info.veroval.medi.connect; device and protocol supplied by HARTMANN's Veroval Activity integration materials";
17
19
  declare const bosoMedicusSystemCredit = "boso official product image: https://www.boso.de/en/products-for-home-users/blood-pressure-instruments/boso-medicus-system";
18
20
  declare const visomatComfortSoftBtCredit = "visomat official product image: https://www.visomat.de/produkte/comfort-soft-bt/";
19
21
  declare const cyclotestMySenseCredit = "cyclotest official product image: https://www.cyclotest.de/produkt/cyclotest-mysense-basalthermometer/";
@@ -29,5 +31,5 @@ declare const cosinussCredit = "cosinuss\u00B0 official product page: https://ww
29
31
  declare const alivecorCredit = "AliveCor official KardiaMobile product page: https://www.alivecor.com/kardiamobile";
30
32
  declare const contecCredit = "Contec official BC401 product page: https://contechealth.com/collections/hot-sales/products/contec-bc401-handheld-urine-analyzer-11-parameter-600pcs-test-strip-bluetooth";
31
33
  declare const transtekCredit = "Transtek official product page: https://www.transtekmed.com/product/transtek-body-scale-gbs-2012-b1";
32
- export { alivecorCredit, aojCredit, bosoMedicusSystemCredit, bosoMedicusSystemImage, bundledAssetCredit, contecCredit, cosinussCredit, cyclotestMySenseCredit, cyclotestMySenseImage, foraCredit, hartmannBpu26Credit, hartmannBpw26Credit, hartmannDuoControlCredit, hartmannEcgCredit, taidocCredit, transtekCredit, viatomAojImage, viatomBodyScaleCredit, viatomBp2Image, viatomBp3Credit, viatomBp3Image, viatomBloodPressureCredit, viatomEcgCredit, viatomEr1Image, viatomF4Image, viatomO2RingImage, viatomOximeterCredit, verovalBpu26Image, verovalBpw26Image, visomatComfortSoftBtCredit, visomatComfortSoftBtImage, };
34
+ export { alivecorCredit, aojCredit, bosoMedicusSystemCredit, bosoMedicusSystemImage, bundledAssetCredit, contecCredit, cosinussCredit, cyclotestMySenseCredit, cyclotestMySenseImage, foraCredit, hartmannBpu26Credit, hartmannBpw26Credit, hartmannActivityCredit, hartmannDuoControlCredit, hartmannEcgCredit, taidocCredit, transtekCredit, viatomAojImage, viatomBodyScaleCredit, viatomBp2Image, viatomBp3Credit, viatomBp3Image, viatomBloodPressureCredit, viatomEcgCredit, viatomEr1Image, viatomF4Image, viatomO2RingImage, viatomOximeterCredit, verovalBpu26Image, verovalBpw26Image, verovalActivityImage, visomatComfortSoftBtCredit, visomatComfortSoftBtImage, };
33
35
  //# sourceMappingURL=supported-device-catalog-assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"supported-device-catalog-assets.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/supported-device-catalog-assets.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAE3E,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAE3E,QAAA,MAAM,sBAAsB,yFAC4D,CAAC;AAEzF,QAAA,MAAM,yBAAyB,qFACqD,CAAC;AAErF,QAAA,MAAM,qBAAqB,4GACgF,CAAC;AAE5G,QAAA,MAAM,cAAc,oMAC+K,CAAC;AAEpM,QAAA,MAAM,cAAc,kKAC6I,CAAC;AAElK,QAAA,MAAM,aAAa,oLACgK,CAAC;AAEpL,QAAA,MAAM,iBAAiB,8LACsK,CAAC;AAE9L,QAAA,MAAM,cAAc,yKACoJ,CAAC;AAEzK,QAAA,MAAM,cAAc,2KACsJ,CAAC;AAE3K,QAAA,MAAM,kBAAkB,0FACiE,CAAC;AAE1F,QAAA,MAAM,wBAAwB,+JACgI,CAAC;AAE/J,QAAA,MAAM,iBAAiB,wIACgH,CAAC;AAExI,QAAA,MAAM,mBAAmB,oMAC0K,CAAC;AAEpM,QAAA,MAAM,mBAAmB,4LACkK,CAAC;AAE5L,QAAA,MAAM,uBAAuB,+HACiG,CAAC;AAE/H,QAAA,MAAM,0BAA0B,qFACoD,CAAC;AAErF,QAAA,MAAM,sBAAsB,2GAC8E,CAAC;AAE3G,QAAA,MAAM,yBAAyB,qFACqD,CAAC;AAErF,QAAA,MAAM,eAAe,oGAC8E,CAAC;AAEpG,QAAA,MAAM,qBAAqB,wEAC4C,CAAC;AAExE,QAAA,MAAM,oBAAoB,6EACkD,CAAC;AAE7E,QAAA,MAAM,eAAe,8EACwD,CAAC;AAE9E,QAAA,MAAM,SAAS,0EAC0D,CAAC;AAE1E,QAAA,MAAM,YAAY,qEACkD,CAAC;AAErE,QAAA,MAAM,UAAU,mEAAmE,CAAC;AAEpF,QAAA,MAAM,cAAc,mGACyE,CAAC;AAE9F,QAAA,MAAM,cAAc,uFACkE,CAAC;AAEvF,QAAA,MAAM,YAAY,8KAC2J,CAAC;AAE9K,QAAA,MAAM,cAAc,wGACmF,CAAC;AAExG,OAAO,EACL,cAAc,EACd,SAAS,EACT,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,GAC1B,CAAC"}
1
+ {"version":3,"file":"supported-device-catalog-assets.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/supported-device-catalog-assets.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAE3E,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAE3E,QAAA,MAAM,oBAAoB,+HACoG,CAAC;AAE/H,QAAA,MAAM,sBAAsB,yFAC4D,CAAC;AAEzF,QAAA,MAAM,yBAAyB,qFACqD,CAAC;AAErF,QAAA,MAAM,qBAAqB,4GACgF,CAAC;AAE5G,QAAA,MAAM,cAAc,oMAC+K,CAAC;AAEpM,QAAA,MAAM,cAAc,kKAC6I,CAAC;AAElK,QAAA,MAAM,aAAa,oLACgK,CAAC;AAEpL,QAAA,MAAM,iBAAiB,8LACsK,CAAC;AAE9L,QAAA,MAAM,cAAc,yKACoJ,CAAC;AAEzK,QAAA,MAAM,cAAc,2KACsJ,CAAC;AAE3K,QAAA,MAAM,kBAAkB,0FACiE,CAAC;AAE1F,QAAA,MAAM,wBAAwB,+JACgI,CAAC;AAE/J,QAAA,MAAM,iBAAiB,wIACgH,CAAC;AAExI,QAAA,MAAM,mBAAmB,oMAC0K,CAAC;AAEpM,QAAA,MAAM,mBAAmB,4LACkK,CAAC;AAE5L,QAAA,MAAM,sBAAsB,+MACkL,CAAC;AAE/M,QAAA,MAAM,uBAAuB,+HACiG,CAAC;AAE/H,QAAA,MAAM,0BAA0B,qFACoD,CAAC;AAErF,QAAA,MAAM,sBAAsB,2GAC8E,CAAC;AAE3G,QAAA,MAAM,yBAAyB,qFACqD,CAAC;AAErF,QAAA,MAAM,eAAe,oGAC8E,CAAC;AAEpG,QAAA,MAAM,qBAAqB,wEAC4C,CAAC;AAExE,QAAA,MAAM,oBAAoB,6EACkD,CAAC;AAE7E,QAAA,MAAM,eAAe,8EACwD,CAAC;AAE9E,QAAA,MAAM,SAAS,0EAC0D,CAAC;AAE1E,QAAA,MAAM,YAAY,qEACkD,CAAC;AAErE,QAAA,MAAM,UAAU,mEAAmE,CAAC;AAEpF,QAAA,MAAM,cAAc,mGACyE,CAAC;AAE9F,QAAA,MAAM,cAAc,uFACkE,CAAC;AAEvF,QAAA,MAAM,YAAY,8KAC2J,CAAC;AAE9K,QAAA,MAAM,cAAc,wGACmF,CAAC;AAExG,OAAO,EACL,cAAc,EACd,SAAS,EACT,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,GAC1B,CAAC"}
@@ -79,6 +79,13 @@ declare const Devices: readonly [{
79
79
  readonly manufacturerKey: "devices.catalog.manufacturers.hartmann";
80
80
  readonly logo: "https://cdn.hartmann.info/product/40385_43.jpg";
81
81
  readonly creditsForImage: "HARTMANN official product image: https://www.hartmann.info/en/products/diagnostics/blood-pressure-monitors/wrist-products/veroval%C2%AE-compact-%2C-pl-%2C-wrist-blood-pressure-monitor";
82
+ }, {
83
+ readonly name: "Veroval Activity tracker";
84
+ readonly nameKey: "devices.catalog.veroval-activity.name";
85
+ readonly manufacturer: "HARTMANN";
86
+ readonly manufacturerKey: "devices.catalog.manufacturers.hartmann";
87
+ readonly logo: "https://image-eo.winudf.com/v2/image/aW5mby52ZXJvdmFsLm1lZGkuY29ubmVjdF9pY29uXzE1MzUwMTcwMDVfMDYx/icon.png?w=360&fakeurl=1";
88
+ readonly creditsForImage: "Veroval Medi.Connect app artwork from APKPure: https://apkpure.net/veroval%C2%AE-medi-connect/info.veroval.medi.connect; device and protocol supplied by HARTMANN's Veroval Activity integration materials";
82
89
  }, {
83
90
  readonly name: "boso medicus system";
84
91
  readonly nameKey: "devices.catalog.boso-medicus-system.name";
@@ -1 +1 @@
1
- {"version":3,"file":"supported-devices.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/supported-devices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AA4ChF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,yBAAyB,GAAG,eAAe,GAAG;IAEjD,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAeF;;;;;;;GAOG;AACH,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qPAkLkC,CAAC;AAyKhD,+FAA+F;AAC/F,QAAA,MAAM,gBAAgB,EAAE,SAAS,yBAAyB,EAQxD,CAAC;AAEH,QAAA,MAAM,iBAAiB,sCAAmB,CAAC;AAK3C,iFAAiF;AACjF,QAAA,MAAM,0BAA0B,EAAE,SAAS,cAAc,EAMxD,CAAC;AAEF,OAAO,EACL,OAAO,EACP,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,GACjB,CAAC;AACF,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"supported-devices.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/supported-devices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AA8ChF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,yBAAyB,GAAG,eAAe,GAAG;IAEjD,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAeF;;;;;;;GAOG;AACH,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qPA0LkC,CAAC;AAuLhD,+FAA+F;AAC/F,QAAA,MAAM,gBAAgB,EAAE,SAAS,yBAAyB,EAQxD,CAAC;AAEH,QAAA,MAAM,iBAAiB,sCAAmB,CAAC;AAK3C,iFAAiF;AACjF,QAAA,MAAM,0BAA0B,EAAE,SAAS,cAAc,EAMxD,CAAC;AAEF,OAAO,EACL,OAAO,EACP,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,GACjB,CAAC;AACF,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bt-provider-child-wrapper.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/components/bt-provider-child-wrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAGjF,eAAO,MAAM,sBAAsB,EAkP9B,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE,EACvC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,KAC3D,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"bt-provider-child-wrapper.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/components/bt-provider-child-wrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAGjF,eAAO,MAAM,sBAAsB,EAoR9B,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE,EACvC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,KAC3D,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"integrated-devices-map.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/constants/integrated-devices-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,eAAO,MAAM,oBAAoB,gCAsB/B,CAAC"}
1
+ {"version":3,"file":"integrated-devices-map.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/constants/integrated-devices-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,eAAO,MAAM,oBAAoB,gCAuB/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"measurement-field-catalog.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/constants/measurement-field-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAC5C,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAoH5E,CAAC"}
1
+ {"version":3,"file":"measurement-field-catalog.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/constants/measurement-field-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwCD,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAC5C,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CA6B5E,CAAC"}
@@ -44,6 +44,8 @@ export * from "./services/devices/uebe/visomat.comfort-soft-bt";
44
44
  export * from "./services/devices/veroval/veroval.bp-monitors";
45
45
  export * from "./services/devices/veroval/veroval.duo-control-device";
46
46
  export * from "./services/devices/veroval/veroval.ecg-device";
47
+ export * from "./services/devices/veroval/veroval.activity-device";
48
+ export * from "./services/devices/veroval/veroval-activity-sequencer";
47
49
  export * from "./services/devices/veroval/veroval.ecg-samples";
48
50
  export * from "./services/devices/lepu/lepu.transports";
49
51
  export * from "./services/devices/aoj/aoj.thermometers";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/bt-management/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AAEtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uDAAuD,CAAC;AACtE,cAAc,yCAAyC,CAAC;AACxD,cAAc,uBAAuB,CAAC;AACtC,cAAc,mDAAmD,CAAC;AAClE,cAAc,wDAAwD,CAAC;AACvE,cAAc,qDAAqD,CAAC;AACpE,cAAc,wCAAwC,CAAC;AACvD,cAAc,wDAAwD,CAAC;AACvE,cAAc,sCAAsC,CAAC;AACrD,cAAc,iDAAiD,CAAC;AAChE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAE3D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/bt-management/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AAEtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uDAAuD,CAAC;AACtE,cAAc,yCAAyC,CAAC;AACxD,cAAc,uBAAuB,CAAC;AACtC,cAAc,mDAAmD,CAAC;AAClE,cAAc,wDAAwD,CAAC;AACvE,cAAc,qDAAqD,CAAC;AACpE,cAAc,wCAAwC,CAAC;AACvD,cAAc,wDAAwD,CAAC;AACvE,cAAc,sCAAsC,CAAC;AACrD,cAAc,iDAAiD,CAAC;AAChE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uDAAuD,CAAC;AACtE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,oDAAoD,CAAC;AACnE,cAAc,uDAAuD,CAAC;AACtE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAE3D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"device-creator.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/device-creator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAOrD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAsE9D,qBAAa,aAAa,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE;IAKhD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAJhD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;gBAEvC,mBAAmB,EAAE,CAAC;IAI5C,aAAa,GAClB,WAAW,MAAM,EACjB,eAAc,SAAS,MAAM,EAAO,KACnC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAwB3B;IAEK,YAAY,CAAC,CAAC,SAAS,SAAS,EACrC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC5B,eAAe,CAAC,CAAC,CAAC;IA4Cd,OAAO,aAEZ;IAEF;;;OAGG;IACH,OAAO,CAAC,eAAe,CA+BrB;IAEF,OAAO,CAAC,eAAe;CAexB"}
1
+ {"version":3,"file":"device-creator.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/device-creator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAOrD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAwE9D,qBAAa,aAAa,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE;IAKhD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAJhD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;gBAEvC,mBAAmB,EAAE,CAAC;IAI5C,aAAa,GAClB,WAAW,MAAM,EACjB,eAAc,SAAS,MAAM,EAAO,KACnC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAwB3B;IAEK,YAAY,CAAC,CAAC,SAAS,SAAS,EACrC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC5B,eAAe,CAAC,CAAC,CAAC;IA4Cd,OAAO,aAEZ;IAEF;;;OAGG;IACH,OAAO,CAAC,eAAe,CA+BrB;IAEF,OAAO,CAAC,eAAe;CAexB"}
@@ -0,0 +1,12 @@
1
+ import { FrameReadResult } from "../../../types/frame-read-result";
2
+ import { FrameReader } from "../../../types/frame-reader";
3
+ /**
4
+ * The activity wristband sends one encrypted chunk per notification and ends a reply with
5
+ * `ff ff`. Keeping notification boundaries is important: the first four and subsequent two
6
+ * bytes of every chunk are transport headers used by the vendor cipher.
7
+ */
8
+ export declare class VerovalActivityFrameReader implements FrameReader {
9
+ private firstFrame;
10
+ readFrame(buffer: readonly string[]): FrameReadResult;
11
+ }
12
+ //# sourceMappingURL=veroval-activity-frame-reader.d.ts.map