@ovok/native 1.5.2 → 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 (79) hide show
  1. package/lib/commonjs/modules/background-sync/android-background-sync.js +35 -2
  2. package/lib/commonjs/modules/background-sync/android-background-sync.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js +80 -88
  4. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js.map +1 -1
  5. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js +95 -40
  6. package/lib/commonjs/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  7. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js +1 -1
  8. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  9. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js +94 -12
  10. package/lib/commonjs/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  11. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js +1 -1
  12. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  13. package/lib/commonjs/modules/data-sync/index.js +11 -0
  14. package/lib/commonjs/modules/data-sync/index.js.map +1 -1
  15. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js +15 -1
  16. package/lib/commonjs/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  17. package/lib/commonjs/modules/data-sync/types/health-authorization-status.js +6 -0
  18. package/lib/commonjs/modules/data-sync/types/health-authorization-status.js.map +1 -0
  19. package/lib/module/modules/background-sync/android-background-sync.js +33 -1
  20. package/lib/module/modules/background-sync/android-background-sync.js.map +1 -1
  21. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js +81 -89
  22. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js.map +1 -1
  23. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js +95 -40
  24. package/lib/module/modules/data-sync/components/android/android-health-connect-authorization-provider.js.map +1 -1
  25. package/lib/module/modules/data-sync/components/android/android-health-sync.js +1 -1
  26. package/lib/module/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  27. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js +95 -13
  28. package/lib/module/modules/data-sync/components/apple/apple-health-authorization-provider.js.map +1 -1
  29. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js +1 -1
  30. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  31. package/lib/module/modules/data-sync/index.js +1 -0
  32. package/lib/module/modules/data-sync/index.js.map +1 -1
  33. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js +15 -1
  34. package/lib/module/modules/data-sync/services/managers/sync-state-manager.js.map +1 -1
  35. package/lib/module/modules/data-sync/types/health-authorization-status.js +4 -0
  36. package/lib/module/modules/data-sync/types/health-authorization-status.js.map +1 -0
  37. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts +24 -1
  38. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts.map +1 -1
  39. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -1
  40. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  41. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  43. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts +1 -1
  44. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  45. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  46. package/lib/typescript/commonjs/src/modules/data-sync/components/data-sync.d.ts +2 -2
  47. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts +1 -0
  48. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  50. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts +1 -0
  51. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  52. package/lib/typescript/commonjs/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts +3 -0
  53. package/lib/typescript/commonjs/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts.map +1 -1
  54. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +5 -1
  55. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  56. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts +15 -0
  57. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -0
  58. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts +24 -1
  59. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts.map +1 -1
  60. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -1
  61. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts +1 -1
  62. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-connect-authorization-provider.d.ts.map +1 -1
  63. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  64. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts +1 -1
  65. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-authorization-provider.d.ts.map +1 -1
  66. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  67. package/lib/typescript/module/src/modules/data-sync/components/data-sync.d.ts +2 -2
  68. package/lib/typescript/module/src/modules/data-sync/index.d.ts +1 -0
  69. package/lib/typescript/module/src/modules/data-sync/index.d.ts.map +1 -1
  70. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  71. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts +1 -0
  72. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-state-manager.d.ts.map +1 -1
  73. package/lib/typescript/module/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts +3 -0
  74. package/lib/typescript/module/src/modules/data-sync/types/android-health-connect-authorization-provider-props.d.ts.map +1 -1
  75. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +5 -1
  76. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  77. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts +15 -0
  78. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -0
  79. package/package.json +2 -2
@@ -1,42 +1,98 @@
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, backgroundAccess = false) => {
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 backgroundPermissions = backgroundAccess ? [{
24
- accessType: "read",
25
- recordType: "BackgroundAccessPermission"
26
- }] : [];
27
- const permissions = [...readPermissions, ...writePermissions, ...backgroundPermissions];
28
- await requestPermission(permissions);
29
52
  const grantedPermissions = await getGrantedPermissions();
30
- const allGranted = permissions.every(permission => grantedPermissions.some(granted => granted.accessType === permission.accessType && granted.recordType === permission.recordType));
31
- setStatus(allGranted ? "authorized" : "shouldRequest");
32
- } catch {
33
- 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
+ });
34
62
  }
35
- }, [backgroundAccess, 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]);
36
94
  return [status, requestAuthorization];
37
95
  };
38
-
39
- // TODO: add error handling
40
96
  export const AndroidHealthConnectAuthorizationProvider = /*#__PURE__*/React.memo(({
41
97
  readIdentifiers,
42
98
  writeIdentifiers,
@@ -44,21 +100,22 @@ export const AndroidHealthConnectAuthorizationProvider = /*#__PURE__*/React.memo
44
100
  children,
45
101
  skipRequest,
46
102
  renderManualRequestUI,
47
- backgroundAccess
103
+ backgroundAccess,
104
+ onAuthorizationStatusChange
48
105
  }) => {
49
- const [authorizationStatus, requestAuthorization] = useHealthConnectAuthorization(readIdentifiers, writeIdentifiers, backgroundAccess);
50
- const shouldRenderManualRequestUI = renderManualRequestUI && authorizationStatus === "shouldRequest" && !skipRequest;
51
- 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;
52
109
  React.useEffect(() => {
53
- if (renderManualRequestUI) {
110
+ if (renderManualRequestUI || skipRequest || authorizationStatus.state !== "shouldRequest") {
54
111
  return;
55
112
  }
56
- if (authorizationStatus === "shouldRequest") {
57
- requestAuthorization();
58
- }
59
- }, [authorizationStatus, requestAuthorization, renderManualRequestUI]);
60
- if (authorizationStatus === "unknown") {
61
- 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
+ });
62
119
  }
63
120
  if (shouldRenderManualRequestUI) {
64
121
  return renderManualRequestUI?.(requestAuthorization);
@@ -68,10 +125,8 @@ export const AndroidHealthConnectAuthorizationProvider = /*#__PURE__*/React.memo
68
125
  children: fallback || null
69
126
  });
70
127
  }
71
- if (authorizationStatus === "authorized") {
72
- return /*#__PURE__*/_jsx(_Fragment, {
73
- children: children
74
- });
128
+ if (authorizationStatus.state === "unknown") {
129
+ return null;
75
130
  }
76
131
  return null;
77
132
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","getGrantedPermissions","initialize","requestPermission","Fragment","_Fragment","jsx","_jsx","useHealthConnectAuthorization","readIdentifiers","writeIdentifiers","backgroundAccess","status","setStatus","useState","requestAuthorization","useCallback","isInitialized","readPermissions","map","recordType","accessType","writePermissions","backgroundPermissions","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":[]}
@@ -47,7 +47,7 @@ export const AndroidHealthSync = /*#__PURE__*/React.memo(({
47
47
  if (!serviceRef.current) {
48
48
  return;
49
49
  }
50
- const pauseReason = !isConnected ? "offline" : wifiOnly && type !== "wifi" ? "wifi-only" : undefined;
50
+ const pauseReason = isConnected === false ? "offline" : wifiOnly && type !== "wifi" ? "wifi-only" : undefined;
51
51
  if (pauseReason) {
52
52
  serviceRef.current.pauseSync(pauseReason);
53
53
  return;
@@ -1 +1 @@
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":[]}
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":[]}
@@ -1,38 +1,120 @@
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
5
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
6
+ const getNotRequestedIdentifiers = async (identifiers, getStatus) => {
7
+ const statuses = await Promise.all(identifiers.map(async identifier => ({
8
+ identifier,
9
+ status: await getStatus(identifier)
10
+ })));
11
+ return statuses.filter(({
12
+ status
13
+ }) => status === HKAuthorizationRequestStatus.shouldRequest).map(({
14
+ identifier
15
+ }) => identifier);
16
+ };
6
17
  export const AppleHealthAuthorizationProvider = /*#__PURE__*/React.memo(({
7
18
  readIdentifiers,
8
19
  writeIdentifiers,
9
20
  fallback,
10
21
  children,
11
22
  skipRequest,
12
- renderManualRequestUI
23
+ renderManualRequestUI,
24
+ onAuthorizationStatusChange
13
25
  }) => {
14
26
  const [authorizationStatus, requestAuthorization] = useHealthkitAuthorization(readIdentifiers, writeIdentifiers);
15
- const shouldRenderManualRequestUI = renderManualRequestUI && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest && !skipRequest;
16
- const shouldRenderFallback = fallback && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest && !skipRequest;
27
+ const [requestState, setRequestState] = React.useState("unknown");
28
+ const [notRequestedReadIdentifiers, setNotRequestedReadIdentifiers] = React.useState(readIdentifiers);
29
+ const [notRequestedWriteIdentifiers, setNotRequestedWriteIdentifiers] = React.useState(writeIdentifiers || []);
30
+ const [requestError, setRequestError] = React.useState();
31
+ const requestKey = `${readIdentifiers.join(",")}::${(writeIdentifiers || []).join(",")}`;
32
+ const identifiersRef = React.useRef({
33
+ readIdentifiers,
34
+ writeIdentifiers
35
+ });
36
+ identifiersRef.current = {
37
+ readIdentifiers,
38
+ writeIdentifiers
39
+ };
40
+ const previousRequestKey = React.useRef(requestKey);
41
+ const status = React.useMemo(() => ({
42
+ error: requestError,
43
+ state: requestState,
44
+ notRequestedReadIdentifiers,
45
+ notRequestedWriteIdentifiers
46
+ }), [notRequestedReadIdentifiers, notRequestedWriteIdentifiers, requestError, requestState]);
47
+ React.useEffect(() => {
48
+ onAuthorizationStatusChange?.(status);
49
+ }, [onAuthorizationStatusChange, status]);
50
+ const inspectAuthorization = React.useCallback(async () => {
51
+ const {
52
+ readIdentifiers: currentRead,
53
+ writeIdentifiers: currentWrite
54
+ } = identifiersRef.current;
55
+ const [notRequestedRead, notRequestedWrite] = await Promise.all([getNotRequestedIdentifiers(currentRead, identifier => getRequestStatusForAuthorization([identifier])), getNotRequestedIdentifiers(currentWrite || [], identifier => getRequestStatusForAuthorization([], [identifier]))]);
56
+ setNotRequestedReadIdentifiers(notRequestedRead);
57
+ setNotRequestedWriteIdentifiers(notRequestedWrite);
58
+ }, []);
59
+ const requestAccess = React.useCallback(async () => {
60
+ setRequestState("requesting");
61
+ try {
62
+ await requestAuthorization();
63
+ await inspectAuthorization();
64
+ setRequestError(undefined);
65
+ setRequestState("ready");
66
+ } catch (error) {
67
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
68
+ setRequestError(normalizedError);
69
+ setRequestState("error");
70
+ }
71
+ }, [inspectAuthorization, requestAuthorization]);
17
72
  React.useEffect(() => {
18
- if (renderManualRequestUI) {
73
+ if (previousRequestKey.current === requestKey) {
19
74
  return;
20
75
  }
21
- requestAuthorization();
22
- }, [readIdentifiers, writeIdentifiers, requestAuthorization, renderManualRequestUI]);
23
- if (!authorizationStatus) {
24
- return null;
76
+ previousRequestKey.current = requestKey;
77
+ setRequestError(undefined);
78
+ setRequestState(authorizationStatus === null ? "unknown" : authorizationStatus === HKAuthorizationRequestStatus.shouldRequest ? "shouldRequest" : "ready");
79
+ setNotRequestedReadIdentifiers(readIdentifiers);
80
+ setNotRequestedWriteIdentifiers(writeIdentifiers || []);
81
+ }, [authorizationStatus, readIdentifiers, requestKey, writeIdentifiers]);
82
+ React.useEffect(() => {
83
+ if (authorizationStatus === null) {
84
+ return;
85
+ }
86
+ void inspectAuthorization().catch(error => {
87
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
88
+ setRequestError(normalizedError);
89
+ setRequestState("error");
90
+ });
91
+ setRequestState(currentState => currentState === "unknown" ? authorizationStatus === HKAuthorizationRequestStatus.shouldRequest ? "shouldRequest" : "ready" : currentState);
92
+ }, [authorizationStatus, inspectAuthorization]);
93
+ React.useEffect(() => {
94
+ if (renderManualRequestUI || skipRequest || authorizationStatus !== HKAuthorizationRequestStatus.shouldRequest || requestState !== "shouldRequest") {
95
+ return;
96
+ }
97
+ void requestAccess();
98
+ }, [authorizationStatus, requestAccess, renderManualRequestUI, requestState, skipRequest]);
99
+ const needsAuthorization = requestState === "shouldRequest" || requestState === "requesting" || requestState === "unknown" && authorizationStatus === HKAuthorizationRequestStatus.shouldRequest;
100
+ const shouldRenderManualRequestUI = renderManualRequestUI && needsAuthorization && requestState !== "requesting" && !skipRequest;
101
+ const shouldRenderFallback = fallback && needsAuthorization && !skipRequest;
102
+ if (skipRequest || requestState === "ready" || requestState === "unknown" && authorizationStatus === HKAuthorizationRequestStatus.unnecessary) {
103
+ return /*#__PURE__*/_jsx(_Fragment, {
104
+ children: children
105
+ });
25
106
  }
26
107
  if (shouldRenderManualRequestUI) {
27
- return renderManualRequestUI?.(requestAuthorization);
108
+ return renderManualRequestUI?.(requestAccess);
28
109
  }
29
110
  if (shouldRenderFallback) {
30
111
  return /*#__PURE__*/_jsx(_Fragment, {
31
112
  children: fallback || null
32
113
  });
33
114
  }
34
- return /*#__PURE__*/_jsx(_Fragment, {
35
- children: children
36
- });
115
+ if (requestState === "error" || requestState === "unknown") {
116
+ return null;
117
+ }
118
+ return null;
37
119
  });
38
120
  //# 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","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","catch","currentState","needsAuthorization","shouldRenderManualRequestUI","shouldRenderFallback","unnecessary"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -71,7 +71,7 @@ export const AppleHealthSync = /*#__PURE__*/React.memo(({
71
71
  if (!serviceRef.current) {
72
72
  return;
73
73
  }
74
- const pauseReason = !isConnected ? "offline" : wifiOnly && type !== "wifi" ? "wifi-only" : undefined;
74
+ const pauseReason = isConnected === false ? "offline" : wifiOnly && type !== "wifi" ? "wifi-only" : undefined;
75
75
  if (pauseReason) {
76
76
  serviceRef.current.pauseSync(pauseReason);
77
77
  return;
@@ -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","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":[]}
@@ -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,3 +1,6 @@
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. */
@@ -15,6 +18,17 @@ interface AndroidHealthConnectBackgroundSyncOptions {
15
18
  type AndroidHealthConnectBackgroundTask = (input: {
16
19
  reason?: string;
17
20
  }) => Promise<void>;
21
+ type AndroidHealthConnectSyncRunOptions = {
22
+ /** A restored, authenticated core client. */
23
+ client: OvokClient;
24
+ /** The patient whose Health Connect records should be imported. */
25
+ patientId: string;
26
+ /** The same record-to-Observation mapping used by AndroidHealthSync. */
27
+ dataToSync: AndroidHealthSyncProps["dataToSync"];
28
+ chunkSize?: number;
29
+ onError?: (error: Error) => void;
30
+ onProgress?: (progress: Partial<Record<MeasurementTypeKey, SyncProgress>>) => void;
31
+ };
18
32
  /**
19
33
  * Starts the Android connected-device foreground service. Mount this alongside
20
34
  * the BTProvider that owns the scan; the service keeps that app process alive
@@ -29,11 +43,20 @@ declare const stopAndroidBluetoothForegroundService: () => Promise<void>;
29
43
  */
30
44
  declare const scheduleAndroidHealthConnectSync: (options?: AndroidHealthConnectBackgroundSyncOptions) => Promise<void>;
31
45
  declare const cancelAndroidHealthConnectSync: () => Promise<void>;
46
+ /**
47
+ * Runs one Health Connect import without mounting React components.
48
+ *
49
+ * Headless JS tasks have no React tree, so AndroidHealthSync cannot be rendered
50
+ * after the OS recreates the app process. The host app still restores its own
51
+ * client and patient identity, then calls this function with the same mapping
52
+ * it uses in the foreground.
53
+ */
54
+ declare const runAndroidHealthConnectSync: ({ client, patientId, dataToSync, chunkSize, onError, onProgress, }: AndroidHealthConnectSyncRunOptions) => Promise<void>;
32
55
  /**
33
56
  * Registers the JS entry point WorkManager invokes after process death. Call
34
57
  * this once from the app entry point, not from a screen component, so it is
35
58
  * registered before Android wakes the headless runtime.
36
59
  */
37
60
  declare const registerAndroidHealthConnectBackgroundTask: (task: AndroidHealthConnectBackgroundTask, taskName?: string) => void;
38
- export { ANDROID_HEALTH_CONNECT_BACKGROUND_TASK, AndroidBluetoothForegroundServiceOptions, AndroidHealthConnectBackgroundSyncOptions, AndroidHealthConnectBackgroundTask, cancelAndroidHealthConnectSync, registerAndroidHealthConnectBackgroundTask, scheduleAndroidHealthConnectSync, startAndroidBluetoothForegroundService, stopAndroidBluetoothForegroundService, };
61
+ export { ANDROID_HEALTH_CONNECT_BACKGROUND_TASK, AndroidBluetoothForegroundServiceOptions, AndroidHealthConnectBackgroundSyncOptions, AndroidHealthConnectBackgroundTask, AndroidHealthConnectSyncRunOptions, cancelAndroidHealthConnectSync, registerAndroidHealthConnectBackgroundTask, runAndroidHealthConnectSync, scheduleAndroidHealthConnectSync, startAndroidBluetoothForegroundService, stopAndroidBluetoothForegroundService, };
39
62
  //# 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;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;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;;;;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,0CAA0C,EAC1C,2BAA2B,EAC3B,gCAAgC,EAChC,sCAAsC,EACtC,qCAAqC,GACtC,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"}
@@ -1,4 +1,4 @@
1
1
  import * as React from "react";
2
2
  import { AndroidHealthConnectAuthorizationProviderProps } from "../../types/android-health-connect-authorization-provider-props";
3
- export declare const AndroidHealthConnectAuthorizationProvider: React.MemoExoticComponent<({ readIdentifiers, writeIdentifiers, fallback, children, skipRequest, renderManualRequestUI, backgroundAccess, }: React.PropsWithChildren<AndroidHealthConnectAuthorizationProviderProps>) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined>;
3
+ export declare const AndroidHealthConnectAuthorizationProvider: React.MemoExoticComponent<({ readIdentifiers, writeIdentifiers, fallback, children, skipRequest, renderManualRequestUI, backgroundAccess, onAuthorizationStatusChange, }: React.PropsWithChildren<AndroidHealthConnectAuthorizationProviderProps>) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined>;
4
4
  //# sourceMappingURL=android-health-connect-authorization-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"android-health-connect-authorization-provider.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/components/android/android-health-connect-authorization-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EAAE,8CAA8C,EAAE,MAAM,iEAAiE,CAAC;AA0EjI,eAAO,MAAM,yCAAyC,+IASjD,KAAK,CAAC,iBAAiB,CAAC,8CAA8C,CAAC,qSA4C3E,CAAC"}
1
+ {"version":3,"file":"android-health-connect-authorization-provider.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/components/android/android-health-connect-authorization-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,OAAO,EAAE,8CAA8C,EAAE,MAAM,iEAAiE,CAAC;AAiIjI,eAAO,MAAM,yCAAyC,4KAUjD,KAAK,CAAC,iBAAiB,CAAC,8CAA8C,CAAC,qSA0D3E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"android-health-sync.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/components/android/android-health-sync.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,eAAO,MAAM,iBAAiB,wFAOzB,sBAAsB,UAqF1B,CAAC"}
1
+ {"version":3,"file":"android-health-sync.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/components/android/android-health-sync.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,eAAO,MAAM,iBAAiB,wFAOzB,sBAAsB,UAsF1B,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import * as React from "react";
2
2
  import { AppleHealthAuthorizationProviderProps } from "../../types/apple-health-authorization-provider-props";
3
- export declare const AppleHealthAuthorizationProvider: React.MemoExoticComponent<({ readIdentifiers, writeIdentifiers, fallback, children, skipRequest, renderManualRequestUI, }: React.PropsWithChildren<AppleHealthAuthorizationProviderProps>) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined>;
3
+ export declare const AppleHealthAuthorizationProvider: React.MemoExoticComponent<({ readIdentifiers, writeIdentifiers, fallback, children, skipRequest, renderManualRequestUI, onAuthorizationStatusChange, }: React.PropsWithChildren<AppleHealthAuthorizationProviderProps>) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined>;
4
4
  //# sourceMappingURL=apple-health-authorization-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apple-health-authorization-provider.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,qCAAqC,EAAE,MAAM,uDAAuD,CAAC;AAE9G,eAAO,MAAM,gCAAgC,6HAQxC,KAAK,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,qSAyClE,CAAC"}
1
+ {"version":3,"file":"apple-health-authorization-provider.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/components/apple/apple-health-authorization-provider.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,qCAAqC,EAAE,MAAM,uDAAuD,CAAC;AAqB9G,eAAO,MAAM,gCAAgC,0JASxC,KAAK,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,qSA8KlE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"apple-health-sync.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/components/apple/apple-health-sync.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,eAAO,MAAM,eAAe,4GAQvB,oBAAoB,UA2GxB,CAAC"}
1
+ {"version":3,"file":"apple-health-sync.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/components/apple/apple-health-sync.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,eAAO,MAAM,eAAe,4GAQvB,oBAAoB,UAiHxB,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import * as React from "react";
2
2
  export declare const DataSync: {
3
3
  ({ children }: React.PropsWithChildren): React.JSX.Element;
4
- AndroidHealthConnectAuthorizationProvider: React.MemoExoticComponent<({ readIdentifiers, writeIdentifiers, fallback, children, skipRequest, renderManualRequestUI, backgroundAccess, }: React.PropsWithChildren<import("../types/android-health-connect-authorization-provider-props").AndroidHealthConnectAuthorizationProviderProps>) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined>;
4
+ AndroidHealthConnectAuthorizationProvider: React.MemoExoticComponent<({ readIdentifiers, writeIdentifiers, fallback, children, skipRequest, renderManualRequestUI, backgroundAccess, onAuthorizationStatusChange, }: React.PropsWithChildren<import("../types/android-health-connect-authorization-provider-props").AndroidHealthConnectAuthorizationProviderProps>) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined>;
5
5
  AndroidHealthSync: React.MemoExoticComponent<({ dataToSync, chunkSize, wifiOnly, onError, onProgress, }: import("..").AndroidHealthSyncProps) => null>;
6
- AppleHealthAuthorizationProvider: React.MemoExoticComponent<({ readIdentifiers, writeIdentifiers, fallback, children, skipRequest, renderManualRequestUI, }: React.PropsWithChildren<import("../types/apple-health-authorization-provider-props").AppleHealthAuthorizationProviderProps>) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined>;
6
+ AppleHealthAuthorizationProvider: React.MemoExoticComponent<({ readIdentifiers, writeIdentifiers, fallback, children, skipRequest, renderManualRequestUI, onAuthorizationStatusChange, }: React.PropsWithChildren<import("../types/apple-health-authorization-provider-props").AppleHealthAuthorizationProviderProps>) => string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined>;
7
7
  AppleHealthSync: React.MemoExoticComponent<({ dataToSync, chunkSize, wifiOnly, backgroundDelivery, onError, onProgress, }: import("..").AppleHealthSyncProps) => null>;
8
8
  ManuallyRequestSheet: React.NamedExoticComponent<import("@gorhom/bottom-sheet").BottomSheetModalProps<any> & React.RefAttributes<import("@gorhom/bottom-sheet").BottomSheetModal>> & {
9
9
  Container: (props: import("@gorhom/bottom-sheet/lib/typescript/components/bottomSheetView/types").BottomSheetViewProps) => React.JSX.Element;