@kingstinct/react-native-healthkit 7.3.1 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/ios/Constants.swift +1 -1
- package/ios/ReactNativeHealthkit.m +1 -1
- package/ios/ReactNativeHealthkit.swift +2 -2
- package/ios/Serializers.swift +12 -0
- package/lib/commonjs/hooks/useHealthkitAuthorization.js +2 -3
- package/lib/commonjs/hooks/useHealthkitAuthorization.js.map +1 -1
- package/lib/commonjs/hooks/useHealthkitAuthorization.test.js +42 -19
- package/lib/commonjs/hooks/useHealthkitAuthorization.test.js.map +1 -1
- package/lib/commonjs/hooks/useIsHealthDataAvailable.js +2 -3
- package/lib/commonjs/hooks/useIsHealthDataAvailable.js.map +1 -1
- package/lib/commonjs/hooks/useIsHealthDataAvailable.test.js +17 -8
- package/lib/commonjs/hooks/useIsHealthDataAvailable.test.js.map +1 -1
- package/lib/commonjs/hooks/useMostRecentCategorySample.js +2 -3
- package/lib/commonjs/hooks/useMostRecentCategorySample.js.map +1 -1
- package/lib/commonjs/hooks/useMostRecentQuantitySample.js +4 -3
- package/lib/commonjs/hooks/useMostRecentQuantitySample.js.map +1 -1
- package/lib/commonjs/hooks/useMostRecentWorkout.js +2 -3
- package/lib/commonjs/hooks/useMostRecentWorkout.js.map +1 -1
- package/lib/commonjs/hooks/useSources.js +2 -3
- package/lib/commonjs/hooks/useSources.js.map +1 -1
- package/lib/commonjs/hooks/useStatisticsForQuantity.js +2 -3
- package/lib/commonjs/hooks/useStatisticsForQuantity.js.map +1 -1
- package/lib/commonjs/hooks/useSubscribeToChanges.js +2 -3
- package/lib/commonjs/hooks/useSubscribeToChanges.js.map +1 -1
- package/lib/commonjs/index.ios.js +471 -0
- package/lib/commonjs/index.ios.js.map +1 -0
- package/lib/commonjs/index.js +9 -482
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.native.js +46 -95
- package/lib/commonjs/index.native.js.map +1 -1
- package/lib/commonjs/index.web.js +7 -1
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/native-types.js +65 -90
- package/lib/commonjs/native-types.js.map +1 -1
- package/lib/commonjs/test-setup.js +51 -0
- package/lib/commonjs/test-setup.js.map +1 -0
- package/lib/commonjs/test-utils.js +1 -2
- package/lib/commonjs/test-utils.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/deleteQuantitySample.js +2 -3
- package/lib/commonjs/utils/deleteQuantitySample.js.map +1 -1
- package/lib/commonjs/utils/deleteSamples.js +2 -3
- package/lib/commonjs/utils/deleteSamples.js.map +1 -1
- package/lib/commonjs/utils/deserializeCategorySample.js +1 -2
- package/lib/commonjs/utils/deserializeCategorySample.js.map +1 -1
- package/lib/commonjs/utils/deserializeCategorySample.test.js +8 -4
- package/lib/commonjs/utils/deserializeCategorySample.test.js.map +1 -1
- package/lib/commonjs/utils/deserializeCorrelation.js +2 -3
- package/lib/commonjs/utils/deserializeCorrelation.js.map +1 -1
- package/lib/commonjs/utils/deserializeHeartbeatSeriesSample.js +1 -2
- package/lib/commonjs/utils/deserializeHeartbeatSeriesSample.js.map +1 -1
- package/lib/commonjs/utils/deserializeSample.js +1 -2
- package/lib/commonjs/utils/deserializeSample.js.map +1 -1
- package/lib/commonjs/utils/deserializeWorkout.js +1 -2
- package/lib/commonjs/utils/deserializeWorkout.js.map +1 -1
- package/lib/commonjs/utils/ensureMetadata.js +1 -2
- package/lib/commonjs/utils/ensureMetadata.js.map +1 -1
- package/lib/commonjs/utils/ensureTotals.js +1 -2
- package/lib/commonjs/utils/ensureTotals.js.map +1 -1
- package/lib/commonjs/utils/ensureUnit.js +2 -3
- package/lib/commonjs/utils/ensureUnit.js.map +1 -1
- package/lib/commonjs/utils/getDateOfBirth.js +2 -3
- package/lib/commonjs/utils/getDateOfBirth.js.map +1 -1
- package/lib/commonjs/utils/getMostRecentCategorySample.js +2 -3
- package/lib/commonjs/utils/getMostRecentCategorySample.js.map +1 -1
- package/lib/commonjs/utils/getMostRecentQuantitySample.js +2 -3
- package/lib/commonjs/utils/getMostRecentQuantitySample.js.map +1 -1
- package/lib/commonjs/utils/getMostRecentWorkout.js +2 -3
- package/lib/commonjs/utils/getMostRecentWorkout.js.map +1 -1
- package/lib/commonjs/utils/getPreferredUnit.js +2 -3
- package/lib/commonjs/utils/getPreferredUnit.js.map +1 -1
- package/lib/commonjs/utils/getPreferredUnits.js +2 -3
- package/lib/commonjs/utils/getPreferredUnits.js.map +1 -1
- package/lib/commonjs/utils/getPreferredUnitsTyped.js +3 -4
- package/lib/commonjs/utils/getPreferredUnitsTyped.js.map +1 -1
- package/lib/commonjs/utils/getRequestStatusForAuthorization.js +3 -5
- package/lib/commonjs/utils/getRequestStatusForAuthorization.js.map +1 -1
- package/lib/commonjs/utils/getWorkoutPlanById.js +2 -3
- package/lib/commonjs/utils/getWorkoutPlanById.js.map +1 -1
- package/lib/commonjs/utils/prepareOptions.js +3 -3
- package/lib/commonjs/utils/prepareOptions.js.map +1 -1
- package/lib/commonjs/utils/queryCategorySamples.js +2 -3
- package/lib/commonjs/utils/queryCategorySamples.js.map +1 -1
- package/lib/commonjs/utils/queryCategorySamplesWithAnchor.js +2 -3
- package/lib/commonjs/utils/queryCategorySamplesWithAnchor.js.map +1 -1
- package/lib/commonjs/utils/queryCorrelationSamples.js +2 -3
- package/lib/commonjs/utils/queryCorrelationSamples.js.map +1 -1
- package/lib/commonjs/utils/queryHeartbeatSeriesSamples.js +2 -3
- package/lib/commonjs/utils/queryHeartbeatSeriesSamples.js.map +1 -1
- package/lib/commonjs/utils/queryHeartbeatSeriesSamplesWithAnchor.js +2 -3
- package/lib/commonjs/utils/queryHeartbeatSeriesSamplesWithAnchor.js.map +1 -1
- package/lib/commonjs/utils/queryQuantitySamples.js +2 -3
- package/lib/commonjs/utils/queryQuantitySamples.js.map +1 -1
- package/lib/commonjs/utils/queryQuantitySamplesWithAnchor.js +2 -3
- package/lib/commonjs/utils/queryQuantitySamplesWithAnchor.js.map +1 -1
- package/lib/commonjs/utils/querySources.js +2 -3
- package/lib/commonjs/utils/querySources.js.map +1 -1
- package/lib/commonjs/utils/queryStatisticsForQuantity.js +2 -3
- package/lib/commonjs/utils/queryStatisticsForQuantity.js.map +1 -1
- package/lib/commonjs/utils/queryWorkouts.js +2 -3
- package/lib/commonjs/utils/queryWorkouts.js.map +1 -1
- package/lib/commonjs/utils/requestAuthorization.js +3 -5
- package/lib/commonjs/utils/requestAuthorization.js.map +1 -1
- package/lib/commonjs/utils/saveCategorySample.js +2 -3
- package/lib/commonjs/utils/saveCategorySample.js.map +1 -1
- package/lib/commonjs/utils/saveCorrelationSample.js +2 -3
- package/lib/commonjs/utils/saveCorrelationSample.js.map +1 -1
- package/lib/commonjs/utils/saveQuantitySample.js +2 -3
- package/lib/commonjs/utils/saveQuantitySample.js.map +1 -1
- package/lib/commonjs/utils/saveWorkoutRoute.js +2 -3
- package/lib/commonjs/utils/saveWorkoutRoute.js.map +1 -1
- package/lib/commonjs/utils/saveWorkoutSample.js +2 -3
- package/lib/commonjs/utils/saveWorkoutSample.js.map +1 -1
- package/lib/commonjs/utils/serializeDate.js +1 -2
- package/lib/commonjs/utils/serializeDate.js.map +1 -1
- package/lib/commonjs/utils/serializeDate.test.js +1 -1
- package/lib/commonjs/utils/serializeDate.test.js.map +1 -1
- package/lib/commonjs/utils/subscribeToChanges.js +6 -8
- package/lib/commonjs/utils/subscribeToChanges.js.map +1 -1
- package/lib/module/hooks/useHealthkitAuthorization.js.map +1 -1
- package/lib/module/hooks/useHealthkitAuthorization.test.js +26 -3
- package/lib/module/hooks/useHealthkitAuthorization.test.js.map +1 -1
- package/lib/module/hooks/useIsHealthDataAvailable.js.map +1 -1
- package/lib/module/hooks/useIsHealthDataAvailable.test.js +9 -2
- package/lib/module/hooks/useIsHealthDataAvailable.test.js.map +1 -1
- package/lib/module/hooks/useMostRecentCategorySample.js.map +1 -1
- package/lib/module/hooks/useMostRecentQuantitySample.js +2 -0
- package/lib/module/hooks/useMostRecentQuantitySample.js.map +1 -1
- package/lib/module/hooks/useMostRecentWorkout.js.map +1 -1
- package/lib/module/hooks/useSources.js.map +1 -1
- package/lib/module/hooks/useStatisticsForQuantity.js.map +1 -1
- package/lib/module/hooks/useSubscribeToChanges.js.map +1 -1
- package/lib/module/index.ios.js +188 -0
- package/lib/module/index.ios.js.map +1 -0
- package/lib/module/index.js +3 -198
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.native.js +1 -3
- package/lib/module/index.native.js.map +1 -1
- package/lib/module/index.web.js +2 -0
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/native-types.js +21 -2
- package/lib/module/native-types.js.map +1 -1
- package/lib/module/test-setup.js +48 -0
- package/lib/module/test-setup.js.map +1 -0
- package/lib/module/test-utils.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/deleteQuantitySample.js.map +1 -1
- package/lib/module/utils/deleteSamples.js.map +1 -1
- package/lib/module/utils/deserializeCategorySample.js.map +1 -1
- package/lib/module/utils/deserializeCategorySample.test.js +4 -2
- package/lib/module/utils/deserializeCategorySample.test.js.map +1 -1
- package/lib/module/utils/deserializeCorrelation.js.map +1 -1
- package/lib/module/utils/deserializeHeartbeatSeriesSample.js.map +1 -1
- package/lib/module/utils/deserializeSample.js.map +1 -1
- package/lib/module/utils/deserializeWorkout.js.map +1 -1
- package/lib/module/utils/ensureMetadata.js.map +1 -1
- package/lib/module/utils/ensureTotals.js.map +1 -1
- package/lib/module/utils/ensureUnit.js.map +1 -1
- package/lib/module/utils/getDateOfBirth.js.map +1 -1
- package/lib/module/utils/getMostRecentCategorySample.js.map +1 -1
- package/lib/module/utils/getMostRecentQuantitySample.js.map +1 -1
- package/lib/module/utils/getMostRecentWorkout.js.map +1 -1
- package/lib/module/utils/getPreferredUnit.js.map +1 -1
- package/lib/module/utils/getPreferredUnits.js.map +1 -1
- package/lib/module/utils/getPreferredUnitsTyped.js.map +1 -1
- package/lib/module/utils/getRequestStatusForAuthorization.js +1 -2
- package/lib/module/utils/getRequestStatusForAuthorization.js.map +1 -1
- package/lib/module/utils/getWorkoutPlanById.js.map +1 -1
- package/lib/module/utils/prepareOptions.js +1 -0
- package/lib/module/utils/prepareOptions.js.map +1 -1
- package/lib/module/utils/queryCategorySamples.js.map +1 -1
- package/lib/module/utils/queryCategorySamplesWithAnchor.js.map +1 -1
- package/lib/module/utils/queryCorrelationSamples.js.map +1 -1
- package/lib/module/utils/queryHeartbeatSeriesSamples.js.map +1 -1
- package/lib/module/utils/queryHeartbeatSeriesSamplesWithAnchor.js.map +1 -1
- package/lib/module/utils/queryQuantitySamples.js.map +1 -1
- package/lib/module/utils/queryQuantitySamplesWithAnchor.js.map +1 -1
- package/lib/module/utils/querySources.js.map +1 -1
- package/lib/module/utils/queryStatisticsForQuantity.js.map +1 -1
- package/lib/module/utils/queryWorkouts.js.map +1 -1
- package/lib/module/utils/requestAuthorization.js +1 -2
- package/lib/module/utils/requestAuthorization.js.map +1 -1
- package/lib/module/utils/saveCategorySample.js.map +1 -1
- package/lib/module/utils/saveCorrelationSample.js.map +1 -1
- package/lib/module/utils/saveQuantitySample.js.map +1 -1
- package/lib/module/utils/saveWorkoutRoute.js.map +1 -1
- package/lib/module/utils/saveWorkoutSample.js.map +1 -1
- package/lib/module/utils/serializeDate.js.map +1 -1
- package/lib/module/utils/serializeDate.test.js.map +1 -1
- package/lib/module/utils/subscribeToChanges.js +3 -4
- package/lib/module/utils/subscribeToChanges.js.map +1 -1
- package/lib/typescript/src/index.d.ts +3 -180
- package/lib/typescript/src/index.ios.d.ts +172 -0
- package/lib/typescript/src/index.native.d.ts +3 -3
- package/lib/typescript/src/index.web.d.ts +2 -0
- package/lib/typescript/src/native-types.d.ts +86 -8
- package/package.json +16 -11
- package/src/hooks/useHealthkitAuthorization.test.ts +18 -4
- package/src/hooks/useIsHealthDataAvailable.test.ts +5 -2
- package/src/hooks/useIsHealthDataAvailable.ts +1 -1
- package/src/hooks/useMostRecentQuantitySample.ts +3 -0
- package/src/index.ios.tsx +263 -0
- package/src/index.native.tsx +1 -4
- package/src/index.tsx +3 -274
- package/src/index.web.tsx +4 -0
- package/src/native-types.ts +97 -9
- package/src/test-setup.ts +51 -0
- package/src/utils/deserializeCategorySample.test.ts +5 -2
- package/src/utils/prepareOptions.ts +1 -0
- package/lib/commonjs/jest.setup.js +0 -45
- package/lib/commonjs/jest.setup.js.map +0 -1
- package/lib/module/jest.setup.js +0 -43
- package/lib/module/jest.setup.js.map +0 -1
- package/src/jest.setup.ts +0 -46
- /package/lib/typescript/src/{jest.setup.d.ts → test-setup.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://github.com/Kingstinct/react-native-healthkit/actions/workflows/test.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/@kingstinct/react-native-healthkit)
|
|
5
5
|
[](https://www.npmjs.com/package/@kingstinct/react-native-healthkit)
|
|
6
|
-
[](https://discord.gg/hrgnETpsJA)
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
React Native bindings for HealthKit with full TypeScript and Promise support covering about any kind of data. Keeping TypeScript mappings as close as possible to HealthKit - both in regards to naming and serialization. This will make it easier to keep this library up-to-date with HealthKit as well as browsing [the official documentation](https://developer.apple.com/documentation/healthkit) (and if something - metadata properties for example - is not typed it will still be accessible).
|
package/ios/Constants.swift
CHANGED
|
@@ -25,4 +25,4 @@ let HKDataTypeIdentifierHeartbeatSeries = "HKDataTypeIdentifierHeartbeatSeries"
|
|
|
25
25
|
|
|
26
26
|
let SpeedUnit = HKUnit(from: "m/s") // HKUnit.meter().unitDivided(by: HKUnit.second())
|
|
27
27
|
// Support for MET data: HKAverageMETs 8.24046 kcal/hr·kg
|
|
28
|
-
let METUnit = HKUnit(from: "kcal/hr·kg")
|
|
28
|
+
let METUnit = HKUnit(from: "kcal/hr·kg")
|
|
@@ -217,7 +217,7 @@ RCT_EXTERN_METHOD(getWorkoutPlanById:(NSString)workoutUUID
|
|
|
217
217
|
reject:(RCTPromiseRejectBlock)reject
|
|
218
218
|
)
|
|
219
219
|
|
|
220
|
-
RCT_EXTERN_METHOD(
|
|
220
|
+
RCT_EXTERN_METHOD(isProtectedDataAvailable:(RCTPromiseResolveBlock)resolve
|
|
221
221
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
222
222
|
|
|
223
223
|
|
|
@@ -44,8 +44,8 @@ class ReactNativeHealthkit: RCTEventEmitter {
|
|
|
44
44
|
self._hasListeners = true
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
@objc(
|
|
48
|
-
func
|
|
47
|
+
@objc(isProtectedDataAvailable:withRejecter:)
|
|
48
|
+
func isProtectedDataAvailable(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
|
|
49
49
|
resolve(UIApplication.shared.isProtectedDataAvailable)
|
|
50
50
|
}
|
|
51
51
|
|
package/ios/Serializers.swift
CHANGED
|
@@ -107,6 +107,18 @@ func serializeUnknownQuantity(quantity: HKQuantity) -> [String: Any]? {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
if #available(iOS 17.0, *) {
|
|
111
|
+
if quantity.is(compatibleWith: HKUnit.lux()) {
|
|
112
|
+
return serializeQuantity(unit: HKUnit.lux(), quantity: quantity)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if #available(iOS 18.0, *) {
|
|
117
|
+
if quantity.is(compatibleWith: HKUnit.appleEffortScore()) {
|
|
118
|
+
return serializeQuantity(unit: HKUnit.appleEffortScore(), quantity: quantity)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
110
122
|
if quantity.is(compatibleWith: SpeedUnit) {
|
|
111
123
|
return serializeQuantity(unit: SpeedUnit, quantity: quantity)
|
|
112
124
|
}
|
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _getRequestStatusForAuthorization = _interopRequireDefault(require("../utils/getRequestStatusForAuthorization"));
|
|
9
9
|
var _requestAuthorization = _interopRequireDefault(require("../utils/requestAuthorization"));
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* @description Hook to retrieve the current authorization status for the given types, and request authorization if needed.
|
|
13
13
|
* @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614152-requestauthorization Apple Docs - requestAuthorization}
|
|
@@ -35,6 +35,5 @@ const useHealthkitAuthorization = (read, write) => {
|
|
|
35
35
|
}, [refreshAuthStatus]);
|
|
36
36
|
return [status, request];
|
|
37
37
|
};
|
|
38
|
-
var _default = useHealthkitAuthorization;
|
|
39
|
-
exports.default = _default;
|
|
38
|
+
var _default = exports.default = useHealthkitAuthorization;
|
|
40
39
|
//# sourceMappingURL=useHealthkitAuthorization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_getRequestStatusForAuthorization","_interopRequireDefault","_requestAuthorization","
|
|
1
|
+
{"version":3,"names":["_react","require","_getRequestStatusForAuthorization","_interopRequireDefault","_requestAuthorization","e","__esModule","default","useHealthkitAuthorization","read","write","status","setStatus","useState","readMemo","useRef","writeMemo","useEffect","current","refreshAuthStatus","useCallback","auth","getRequestStatusForAuthorization","request","requestAuthorization","_default","exports"],"sources":["useHealthkitAuthorization.ts"],"sourcesContent":["import {\n useCallback, useEffect, useRef, useState,\n} from 'react'\n\nimport getRequestStatusForAuthorization from '../utils/getRequestStatusForAuthorization'\nimport requestAuthorization from '../utils/requestAuthorization'\n\nimport type { HealthkitReadAuthorization, HealthkitWriteAuthorization, HKAuthorizationRequestStatus } from '../native-types'\n\n/**\n * @description Hook to retrieve the current authorization status for the given types, and request authorization if needed.\n * @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614152-requestauthorization Apple Docs - requestAuthorization}\n * @see {@link https://developer.apple.com/documentation/healthkit/authorizing_access_to_health_data Apple Docs - Authorizing access to health data}\n */\nconst useHealthkitAuthorization = (read: readonly HealthkitReadAuthorization[], write?: readonly HealthkitWriteAuthorization[]) => {\n const [status, setStatus] = useState<HKAuthorizationRequestStatus | null>(null)\n\n const readMemo = useRef(read)\n const writeMemo = useRef(write)\n\n useEffect(() => {\n readMemo.current = read\n writeMemo.current = write\n }, [read, write])\n\n const refreshAuthStatus = useCallback(async () => {\n const auth = await getRequestStatusForAuthorization(readMemo.current, writeMemo.current)\n\n setStatus(auth)\n return auth\n }, [])\n\n const request = useCallback(async () => {\n await requestAuthorization(readMemo.current, writeMemo.current)\n return refreshAuthStatus()\n }, [refreshAuthStatus])\n\n useEffect(() => {\n void refreshAuthStatus()\n }, [refreshAuthStatus])\n\n return [status, request] as const\n}\n\nexport default useHealthkitAuthorization\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,iCAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAgE,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIhE;AACA;AACA;AACA;AACA;AACA,MAAMG,yBAAyB,GAAGA,CAACC,IAA2C,EAAEC,KAA8C,KAAK;EACjI,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAsC,IAAI,CAAC;EAE/E,MAAMC,QAAQ,GAAG,IAAAC,aAAM,EAACN,IAAI,CAAC;EAC7B,MAAMO,SAAS,GAAG,IAAAD,aAAM,EAACL,KAAK,CAAC;EAE/B,IAAAO,gBAAS,EAAC,MAAM;IACdH,QAAQ,CAACI,OAAO,GAAGT,IAAI;IACvBO,SAAS,CAACE,OAAO,GAAGR,KAAK;EAC3B,CAAC,EAAE,CAACD,IAAI,EAAEC,KAAK,CAAC,CAAC;EAEjB,MAAMS,iBAAiB,GAAG,IAAAC,kBAAW,EAAC,YAAY;IAChD,MAAMC,IAAI,GAAG,MAAM,IAAAC,yCAAgC,EAACR,QAAQ,CAACI,OAAO,EAAEF,SAAS,CAACE,OAAO,CAAC;IAExFN,SAAS,CAACS,IAAI,CAAC;IACf,OAAOA,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,OAAO,GAAG,IAAAH,kBAAW,EAAC,YAAY;IACtC,MAAM,IAAAI,6BAAoB,EAACV,QAAQ,CAACI,OAAO,EAAEF,SAAS,CAACE,OAAO,CAAC;IAC/D,OAAOC,iBAAiB,CAAC,CAAC;EAC5B,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,IAAAF,gBAAS,EAAC,MAAM;IACd,KAAKE,iBAAiB,CAAC,CAAC;EAC1B,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,OAAO,CAACR,MAAM,EAAEY,OAAO,CAAC;AAC1B,CAAC;AAAA,IAAAE,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAEcC,yBAAyB","ignoreList":[]}
|
|
@@ -1,48 +1,71 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _reactNative = require("@testing-library/react-native");
|
|
4
|
-
var _useHealthkitAuthorization = _interopRequireDefault(require("./useHealthkitAuthorization"));
|
|
5
|
-
var _nativeTypes = _interopRequireWildcard(require("../native-types"));
|
|
6
4
|
var _testUtils = _interopRequireDefault(require("../test-utils"));
|
|
7
|
-
function
|
|
8
|
-
function
|
|
9
|
-
function
|
|
5
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
7
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
10
8
|
describe('useHealthkitAuthorization', () => {
|
|
9
|
+
let NativeTypes;
|
|
10
|
+
let useHealthkitAuthorization;
|
|
11
|
+
beforeAll(async () => {
|
|
12
|
+
NativeTypes = await Promise.resolve().then(() => _interopRequireWildcard(require('../native-types')));
|
|
13
|
+
useHealthkitAuthorization = (await Promise.resolve().then(() => _interopRequireWildcard(require('./useHealthkitAuthorization')))).default;
|
|
14
|
+
});
|
|
11
15
|
test('should return shouldRequest', async () => {
|
|
12
|
-
|
|
16
|
+
const {
|
|
17
|
+
HKAuthorizationRequestStatus,
|
|
18
|
+
HKCategoryTypeIdentifier,
|
|
19
|
+
default: Native
|
|
20
|
+
} = NativeTypes;
|
|
21
|
+
jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.shouldRequest));
|
|
13
22
|
const {
|
|
14
23
|
result
|
|
15
|
-
} = (0, _reactNative.renderHook)(() => (
|
|
24
|
+
} = (0, _reactNative.renderHook)(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]));
|
|
16
25
|
await (0, _testUtils.default)();
|
|
17
|
-
expect(result.current[0]).toBe(
|
|
26
|
+
expect(result.current[0]).toBe(HKAuthorizationRequestStatus.shouldRequest);
|
|
18
27
|
});
|
|
19
28
|
test('should request permissions', async () => {
|
|
20
|
-
const
|
|
21
|
-
|
|
29
|
+
const {
|
|
30
|
+
HKAuthorizationRequestStatus,
|
|
31
|
+
HKCategoryTypeIdentifier,
|
|
32
|
+
default: Native
|
|
33
|
+
} = NativeTypes;
|
|
34
|
+
const spy = jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.shouldRequest));
|
|
35
|
+
jest.spyOn(Native, 'requestAuthorization').mockReturnValue(Promise.resolve(true));
|
|
22
36
|
const {
|
|
23
37
|
result
|
|
24
|
-
} = (0, _reactNative.renderHook)(() => (
|
|
38
|
+
} = (0, _reactNative.renderHook)(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]));
|
|
25
39
|
await (0, _testUtils.default)();
|
|
26
|
-
spy.mockReturnValue(Promise.resolve(
|
|
40
|
+
spy.mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.unnecessary));
|
|
27
41
|
let retVal;
|
|
28
42
|
await (0, _reactNative.act)(async () => {
|
|
29
|
-
|
|
43
|
+
const r = await result.current[1]();
|
|
44
|
+
retVal = r;
|
|
30
45
|
});
|
|
31
|
-
expect(result.current[0]).toBe(
|
|
32
|
-
expect(retVal).toBe(
|
|
46
|
+
expect(result.current[0]).toBe(HKAuthorizationRequestStatus.unnecessary);
|
|
47
|
+
expect(retVal).toBe(HKAuthorizationRequestStatus.unnecessary);
|
|
33
48
|
});
|
|
34
49
|
test('should return unnecessary', async () => {
|
|
35
|
-
|
|
50
|
+
const {
|
|
51
|
+
HKAuthorizationRequestStatus,
|
|
52
|
+
HKCategoryTypeIdentifier,
|
|
53
|
+
default: Native
|
|
54
|
+
} = NativeTypes;
|
|
55
|
+
jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.unnecessary));
|
|
36
56
|
const {
|
|
37
57
|
result
|
|
38
|
-
} = (0, _reactNative.renderHook)(() => (
|
|
58
|
+
} = (0, _reactNative.renderHook)(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]));
|
|
39
59
|
await (0, _testUtils.default)();
|
|
40
|
-
expect(result.current[0]).toBe(
|
|
60
|
+
expect(result.current[0]).toBe(HKAuthorizationRequestStatus.unnecessary);
|
|
41
61
|
});
|
|
42
62
|
test('should return null before initalizing', async () => {
|
|
63
|
+
const {
|
|
64
|
+
HKCategoryTypeIdentifier
|
|
65
|
+
} = NativeTypes;
|
|
43
66
|
const {
|
|
44
67
|
result
|
|
45
|
-
} = (0, _reactNative.renderHook)(() => (
|
|
68
|
+
} = (0, _reactNative.renderHook)(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]));
|
|
46
69
|
expect(result.current[0]).toBe(null);
|
|
47
70
|
await (0, _testUtils.default)();
|
|
48
71
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_testUtils","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","_interopRequireWildcard","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","describe","NativeTypes","useHealthkitAuthorization","beforeAll","Promise","resolve","then","test","HKAuthorizationRequestStatus","HKCategoryTypeIdentifier","Native","jest","spyOn","mockReturnValue","shouldRequest","result","renderHook","abdominalCramps","waitForNextUpdate","expect","current","toBe","spy","unnecessary","retVal","act"],"sources":["useHealthkitAuthorization.test.ts"],"sourcesContent":["import { renderHook, act } from '@testing-library/react-native'\n\nimport waitForNextUpdate from '../test-utils'\n\ndescribe('useHealthkitAuthorization', () => {\n let NativeTypes: typeof import('../native-types')\n let useHealthkitAuthorization: typeof import('./useHealthkitAuthorization').default\n beforeAll(async () => {\n NativeTypes = await import('../native-types')\n useHealthkitAuthorization = (await import('./useHealthkitAuthorization')).default\n })\n\n test('should return shouldRequest', async () => {\n const { HKAuthorizationRequestStatus, HKCategoryTypeIdentifier, default: Native } = NativeTypes\n\n jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.shouldRequest))\n\n const { result } = renderHook(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]))\n\n await waitForNextUpdate()\n\n expect(result.current[0]).toBe(HKAuthorizationRequestStatus.shouldRequest)\n })\n\n test('should request permissions', async () => {\n const { HKAuthorizationRequestStatus, HKCategoryTypeIdentifier, default: Native } = NativeTypes\n\n const spy = jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.shouldRequest))\n jest.spyOn(Native, 'requestAuthorization').mockReturnValue(Promise.resolve(true))\n\n const { result } = renderHook(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]))\n\n await waitForNextUpdate()\n\n spy.mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.unnecessary))\n\n let retVal: typeof HKAuthorizationRequestStatus | undefined\n await act(async () => {\n const r = await result.current[1]() as unknown as typeof HKAuthorizationRequestStatus\n retVal = r\n })\n\n expect(result.current[0]).toBe(HKAuthorizationRequestStatus.unnecessary)\n expect(retVal).toBe(HKAuthorizationRequestStatus.unnecessary)\n })\n\n test('should return unnecessary', async () => {\n const { HKAuthorizationRequestStatus, HKCategoryTypeIdentifier, default: Native } = NativeTypes\n\n jest.spyOn(Native, 'getRequestStatusForAuthorization').mockReturnValue(Promise.resolve(HKAuthorizationRequestStatus.unnecessary))\n\n const { result } = renderHook(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]))\n\n await waitForNextUpdate()\n\n expect(result.current[0]).toBe(HKAuthorizationRequestStatus.unnecessary)\n })\n\n test('should return null before initalizing', async () => {\n const { HKCategoryTypeIdentifier } = NativeTypes\n\n const { result } = renderHook(() => useHealthkitAuthorization([HKCategoryTypeIdentifier.abdominalCramps]))\n\n expect(result.current[0]).toBe(null)\n\n await waitForNextUpdate()\n })\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _nativeTypes = _interopRequireDefault(require("../native-types"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
/**
|
|
11
11
|
* @description By default, HealthKit data is available on iOS and watchOS. HealthKit data is also available on iPadOS 17 or later. However, devices running in an enterprise environment may restrict access to HealthKit data.
|
|
12
12
|
* @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614180-ishealthdataavailable Apple HealthKit isHealthDataAvailable}
|
|
@@ -23,6 +23,5 @@ const useIsHealthDataAvailable = () => {
|
|
|
23
23
|
}, []);
|
|
24
24
|
return isAvailable;
|
|
25
25
|
};
|
|
26
|
-
var _default = useIsHealthDataAvailable;
|
|
27
|
-
exports.default = _default;
|
|
26
|
+
var _default = exports.default = useIsHealthDataAvailable;
|
|
28
27
|
//# sourceMappingURL=useIsHealthDataAvailable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_nativeTypes","_interopRequireDefault","
|
|
1
|
+
{"version":3,"names":["_react","require","_nativeTypes","_interopRequireDefault","e","__esModule","default","useIsHealthDataAvailable","isAvailable","setIsAvailable","useState","useEffect","init","res","Native","isHealthDataAvailable","_default","exports"],"sources":["useIsHealthDataAvailable.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nimport Native from '../native-types'\n\n/**\n * @description By default, HealthKit data is available on iOS and watchOS. HealthKit data is also available on iPadOS 17 or later. However, devices running in an enterprise environment may restrict access to HealthKit data.\n* @see {@link https://developer.apple.com/documentation/healthkit/hkhealthstore/1614180-ishealthdataavailable Apple HealthKit isHealthDataAvailable}\n* @returns {boolean | null} true if HealthKit is available; otherwise, false. null while initializing.\n*/\nconst useIsHealthDataAvailable = (): boolean | null => {\n const [isAvailable, setIsAvailable] = useState<boolean | null>(null)\n\n useEffect(() => {\n const init = async () => {\n const res = await Native.isHealthDataAvailable()\n setIsAvailable(res)\n }\n void init()\n }, [])\n\n return isAvailable\n}\n\nexport default useIsHealthDataAvailable\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAoC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpC;AACA;AACA;AACA;AACA;AACA,MAAMG,wBAAwB,GAAGA,CAAA,KAAsB;EACrD,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAiB,IAAI,CAAC;EAEpE,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,IAAI,GAAG,MAAAA,CAAA,KAAY;MACvB,MAAMC,GAAG,GAAG,MAAMC,oBAAM,CAACC,qBAAqB,CAAC,CAAC;MAChDN,cAAc,CAACI,GAAG,CAAC;IACrB,CAAC;IACD,KAAKD,IAAI,CAAC,CAAC;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOJ,WAAW;AACpB,CAAC;AAAA,IAAAQ,QAAA,GAAAC,OAAA,CAAAX,OAAA,GAEcC,wBAAwB","ignoreList":[]}
|
|
@@ -1,31 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _reactNative = require("@testing-library/react-native");
|
|
4
|
-
var _useIsHealthDataAvailable = _interopRequireDefault(require("./useIsHealthDataAvailable"));
|
|
5
|
-
var _nativeTypes = _interopRequireDefault(require("../native-types"));
|
|
6
4
|
var _testUtils = _interopRequireDefault(require("../test-utils"));
|
|
7
|
-
function _interopRequireDefault(
|
|
5
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
7
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
8
8
|
describe('useIsHealthDataAvailable', () => {
|
|
9
9
|
test('should return false', async () => {
|
|
10
|
-
|
|
10
|
+
const useIsHealthDataAvailable = (await Promise.resolve().then(() => _interopRequireWildcard(require('./useIsHealthDataAvailable')))).default;
|
|
11
|
+
const {
|
|
12
|
+
default: Native
|
|
13
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require('../native-types')));
|
|
14
|
+
jest.spyOn(Native, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(false));
|
|
11
15
|
const {
|
|
12
16
|
result
|
|
13
|
-
} = (0, _reactNative.renderHook)(
|
|
17
|
+
} = (0, _reactNative.renderHook)(useIsHealthDataAvailable);
|
|
14
18
|
await (0, _testUtils.default)();
|
|
15
19
|
expect(result.current).toBe(false);
|
|
16
20
|
});
|
|
17
21
|
test('should return true', async () => {
|
|
18
|
-
|
|
22
|
+
const useIsHealthDataAvailable = (await Promise.resolve().then(() => _interopRequireWildcard(require('./useIsHealthDataAvailable')))).default;
|
|
23
|
+
const {
|
|
24
|
+
default: Native
|
|
25
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require('../native-types')));
|
|
26
|
+
jest.spyOn(Native, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(true));
|
|
19
27
|
const {
|
|
20
28
|
result
|
|
21
|
-
} = (0, _reactNative.renderHook)(
|
|
29
|
+
} = (0, _reactNative.renderHook)(useIsHealthDataAvailable);
|
|
22
30
|
await (0, _testUtils.default)();
|
|
23
31
|
expect(result.current).toBe(true);
|
|
24
32
|
});
|
|
25
33
|
test('should return null before initalizing', async () => {
|
|
34
|
+
const useIsHealthDataAvailable = (await Promise.resolve().then(() => _interopRequireWildcard(require('./useIsHealthDataAvailable')))).default;
|
|
26
35
|
const {
|
|
27
36
|
result
|
|
28
|
-
} = (0, _reactNative.renderHook)(
|
|
37
|
+
} = (0, _reactNative.renderHook)(useIsHealthDataAvailable);
|
|
29
38
|
expect(result.current).toBe(null);
|
|
30
39
|
await (0, _testUtils.default)();
|
|
31
40
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_testUtils","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","_interopRequireWildcard","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","describe","test","useIsHealthDataAvailable","Promise","resolve","then","Native","jest","spyOn","mockReturnValue","result","renderHook","waitForNextUpdate","expect","current","toBe"],"sources":["useIsHealthDataAvailable.test.ts"],"sourcesContent":["import { renderHook } from '@testing-library/react-native'\n\nimport waitForNextUpdate from '../test-utils'\n\ndescribe('useIsHealthDataAvailable', () => {\n test('should return false', async () => {\n const useIsHealthDataAvailable = (await import('./useIsHealthDataAvailable')).default\n const { default: Native } = await import('../native-types')\n jest.spyOn(Native, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(false))\n\n const { result } = renderHook(useIsHealthDataAvailable)\n\n await waitForNextUpdate()\n\n expect(result.current).toBe(false)\n })\n\n test('should return true', async () => {\n const useIsHealthDataAvailable = (await import('./useIsHealthDataAvailable')).default\n const { default: Native } = await import('../native-types')\n jest.spyOn(Native, 'isHealthDataAvailable').mockReturnValue(Promise.resolve(true))\n\n const { result } = renderHook(useIsHealthDataAvailable)\n\n await waitForNextUpdate()\n\n expect(result.current).toBe(true)\n })\n\n test('should return null before initalizing', async () => {\n const useIsHealthDataAvailable = (await import('./useIsHealthDataAvailable')).default\n const { result } = renderHook(useIsHealthDataAvailable)\n\n expect(result.current).toBe(null)\n\n await waitForNextUpdate()\n })\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _useSubscribeToChanges = _interopRequireDefault(require("./useSubscribeToChanges"));
|
|
9
9
|
var _getMostRecentCategorySample = _interopRequireDefault(require("../utils/getMostRecentCategorySample"));
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* @returns the most recent sample for the given category type.
|
|
13
13
|
*/
|
|
@@ -19,6 +19,5 @@ function useMostRecentCategorySample(identifier) {
|
|
|
19
19
|
(0, _useSubscribeToChanges.default)(identifier, updater);
|
|
20
20
|
return category;
|
|
21
21
|
}
|
|
22
|
-
var _default = useMostRecentCategorySample;
|
|
23
|
-
exports.default = _default;
|
|
22
|
+
var _default = exports.default = useMostRecentCategorySample;
|
|
24
23
|
//# sourceMappingURL=useMostRecentCategorySample.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_useSubscribeToChanges","_interopRequireDefault","_getMostRecentCategorySample","
|
|
1
|
+
{"version":3,"names":["_react","require","_useSubscribeToChanges","_interopRequireDefault","_getMostRecentCategorySample","e","__esModule","default","useMostRecentCategorySample","identifier","category","setCategory","useState","updater","useCallback","getMostRecentCategorySample","then","useSubscribeToChanges","_default","exports"],"sources":["useMostRecentCategorySample.ts"],"sourcesContent":["import { useCallback, useState } from 'react'\n\nimport useSubscribeToChanges from './useSubscribeToChanges'\nimport getMostRecentCategorySample from '../utils/getMostRecentCategorySample'\n\nimport type { HKCategoryTypeIdentifier } from '../native-types'\nimport type { HKCategorySample } from '../types'\n\n/**\n * @returns the most recent sample for the given category type.\n */\nfunction useMostRecentCategorySample<\n TCategory extends HKCategoryTypeIdentifier\n>(identifier: TCategory) {\n const [category, setCategory] = useState<HKCategorySample<TCategory> | null>(\n null,\n )\n const updater = useCallback(() => {\n void getMostRecentCategorySample(identifier).then(setCategory)\n }, [identifier])\n\n useSubscribeToChanges(identifier, updater)\n\n return category\n}\n\nexport default useMostRecentCategorySample\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,4BAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA8E,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAK9E;AACA;AACA;AACA,SAASG,2BAA2BA,CAElCC,UAAqB,EAAE;EACvB,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EACtC,IACF,CAAC;EACD,MAAMC,OAAO,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAChC,KAAK,IAAAC,oCAA2B,EAACN,UAAU,CAAC,CAACO,IAAI,CAACL,WAAW,CAAC;EAChE,CAAC,EAAE,CAACF,UAAU,CAAC,CAAC;EAEhB,IAAAQ,8BAAqB,EAACR,UAAU,EAAEI,OAAO,CAAC;EAE1C,OAAOH,QAAQ;AACjB;AAAC,IAAAQ,QAAA,GAAAC,OAAA,CAAAZ,OAAA,GAEcC,2BAA2B","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ var _react = require("react");
|
|
|
8
8
|
var _ensureUnit = _interopRequireDefault(require("../utils/ensureUnit"));
|
|
9
9
|
var _getMostRecentQuantitySample = _interopRequireDefault(require("../utils/getMostRecentQuantitySample"));
|
|
10
10
|
var _subscribeToChanges = _interopRequireDefault(require("../utils/subscribeToChanges"));
|
|
11
|
-
function _interopRequireDefault(
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
/**
|
|
13
13
|
* @returns the most recent sample for the given quantity type.
|
|
14
14
|
*/
|
|
@@ -18,6 +18,8 @@ function useMostRecentQuantitySample(identifier, unit) {
|
|
|
18
18
|
let cancelSubscription;
|
|
19
19
|
const init = async () => {
|
|
20
20
|
const actualUnit = await (0, _ensureUnit.default)(identifier, unit);
|
|
21
|
+
const value = await (0, _getMostRecentQuantitySample.default)(identifier, actualUnit);
|
|
22
|
+
setLastSample(value);
|
|
21
23
|
cancelSubscription = await (0, _subscribeToChanges.default)(identifier, async () => {
|
|
22
24
|
const value = await (0, _getMostRecentQuantitySample.default)(identifier, actualUnit);
|
|
23
25
|
setLastSample(value);
|
|
@@ -31,6 +33,5 @@ function useMostRecentQuantitySample(identifier, unit) {
|
|
|
31
33
|
}, [identifier, unit]);
|
|
32
34
|
return lastSample;
|
|
33
35
|
}
|
|
34
|
-
var _default = useMostRecentQuantitySample;
|
|
35
|
-
exports.default = _default;
|
|
36
|
+
var _default = exports.default = useMostRecentQuantitySample;
|
|
36
37
|
//# sourceMappingURL=useMostRecentQuantitySample.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_ensureUnit","_interopRequireDefault","_getMostRecentQuantitySample","_subscribeToChanges","
|
|
1
|
+
{"version":3,"names":["_react","require","_ensureUnit","_interopRequireDefault","_getMostRecentQuantitySample","_subscribeToChanges","e","__esModule","default","useMostRecentQuantitySample","identifier","unit","lastSample","setLastSample","useState","useEffect","cancelSubscription","init","actualUnit","ensureUnit","value","getMostRecentQuantitySample","subscribeToChanges","_cancelSubscription","_default","exports"],"sources":["useMostRecentQuantitySample.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nimport ensureUnit from '../utils/ensureUnit'\nimport getMostRecentQuantitySample from '../utils/getMostRecentQuantitySample'\nimport subscribeToChanges from '../utils/subscribeToChanges'\n\nimport type { HKQuantityTypeIdentifier, UnitForIdentifier } from '../native-types'\nimport type { HKQuantitySample } from '../types'\n\n/**\n * @returns the most recent sample for the given quantity type.\n */\nfunction useMostRecentQuantitySample<\n TIdentifier extends HKQuantityTypeIdentifier,\n TUnit extends UnitForIdentifier<TIdentifier>\n>(identifier: TIdentifier, unit?: TUnit) {\n const [lastSample, setLastSample] = useState<HKQuantitySample<\n TIdentifier\n > | null>(null)\n\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n const actualUnit = await ensureUnit(identifier, unit)\n\n const value = await getMostRecentQuantitySample(identifier, actualUnit)\n setLastSample(value)\n\n cancelSubscription = await subscribeToChanges(identifier, async () => {\n const value = await getMostRecentQuantitySample(identifier, actualUnit)\n setLastSample(value)\n })\n }\n void init()\n\n return () => {\n void cancelSubscription?.()\n }\n }, [identifier, unit])\n\n return lastSample\n}\n\nexport default useMostRecentQuantitySample\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,4BAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,mBAAA,GAAAF,sBAAA,CAAAF,OAAA;AAA4D,SAAAE,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAK5D;AACA;AACA;AACA,SAASG,2BAA2BA,CAGlCC,UAAuB,EAAEC,IAAY,EAAE;EACvC,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAElC,IAAI,CAAC;EAEf,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIC,kBAAwD;IAE5D,MAAMC,IAAI,GAAG,MAAAA,CAAA,KAAY;MACvB,MAAMC,UAAU,GAAG,MAAM,IAAAC,mBAAU,EAACT,UAAU,EAAEC,IAAI,CAAC;MAErD,MAAMS,KAAK,GAAG,MAAM,IAAAC,oCAA2B,EAACX,UAAU,EAAEQ,UAAU,CAAC;MACvEL,aAAa,CAACO,KAAK,CAAC;MAEpBJ,kBAAkB,GAAG,MAAM,IAAAM,2BAAkB,EAACZ,UAAU,EAAE,YAAY;QACpE,MAAMU,KAAK,GAAG,MAAM,IAAAC,oCAA2B,EAACX,UAAU,EAAEQ,UAAU,CAAC;QACvEL,aAAa,CAACO,KAAK,CAAC;MACtB,CAAC,CAAC;IACJ,CAAC;IACD,KAAKH,IAAI,CAAC,CAAC;IAEX,OAAO,MAAM;MAAA,IAAAM,mBAAA;MACX,OAAAA,mBAAA,GAAKP,kBAAkB,cAAAO,mBAAA,uBAAlBA,mBAAA,CAAqB,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAACb,UAAU,EAAEC,IAAI,CAAC,CAAC;EAEtB,OAAOC,UAAU;AACnB;AAAC,IAAAY,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GAEcC,2BAA2B","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ var _react = require("react");
|
|
|
8
8
|
var _getMostRecentWorkout = _interopRequireDefault(require("../utils/getMostRecentWorkout"));
|
|
9
9
|
var _getPreferredUnitsTyped = _interopRequireDefault(require("../utils/getPreferredUnitsTyped"));
|
|
10
10
|
var _subscribeToChanges = _interopRequireDefault(require("../utils/subscribeToChanges"));
|
|
11
|
-
function _interopRequireDefault(
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
/**
|
|
13
13
|
* @returns the most recent workout sample.
|
|
14
14
|
*/
|
|
@@ -44,6 +44,5 @@ function useMostRecentWorkout(options) {
|
|
|
44
44
|
}, [update]);
|
|
45
45
|
return workout;
|
|
46
46
|
}
|
|
47
|
-
var _default = useMostRecentWorkout;
|
|
48
|
-
exports.default = _default;
|
|
47
|
+
var _default = exports.default = useMostRecentWorkout;
|
|
49
48
|
//# sourceMappingURL=useMostRecentWorkout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_getMostRecentWorkout","_interopRequireDefault","_getPreferredUnitsTyped","_subscribeToChanges","
|
|
1
|
+
{"version":3,"names":["_react","require","_getMostRecentWorkout","_interopRequireDefault","_getPreferredUnitsTyped","_subscribeToChanges","e","__esModule","default","useMostRecentWorkout","options","workout","setWorkout","useState","optionsRef","useRef","useEffect","current","update","useCallback","energyUnit","distanceUnit","getPreferredUnitsTyped","getMostRecentWorkout","cancelSubscription","init","subscribeToChanges","_cancelSubscription","_default","exports"],"sources":["useMostRecentWorkout.ts"],"sourcesContent":["import {\n useEffect, useState, useRef, useCallback,\n} from 'react'\n\nimport getMostRecentWorkout from '../utils/getMostRecentWorkout'\nimport getPreferredUnitsTyped from '../utils/getPreferredUnitsTyped'\nimport subscribeToChanges from '../utils/subscribeToChanges'\n\nimport type { EnergyUnit, LengthUnit } from '../native-types'\nimport type { HKWorkout } from '../types'\n\n/**\n * @returns the most recent workout sample.\n */\nfunction useMostRecentWorkout<\n TEnergy extends EnergyUnit,\n TDistance extends LengthUnit\n>(options?: { readonly energyUnit?: TEnergy; readonly distanceUnit?: TDistance }) {\n const [workout, setWorkout] = useState<HKWorkout<TEnergy, TDistance> | null>(null)\n\n const optionsRef = useRef(options)\n\n useEffect(() => {\n optionsRef.current = options\n }, [options])\n\n const update = useCallback(async () => {\n const { energyUnit, distanceUnit } = await getPreferredUnitsTyped(\n optionsRef.current,\n )\n\n setWorkout(await getMostRecentWorkout({\n energyUnit,\n distanceUnit,\n }))\n }, [])\n\n useEffect(() => {\n void update()\n }, [update])\n\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n cancelSubscription = await subscribeToChanges(\n 'HKWorkoutTypeIdentifier',\n update,\n )\n }\n void init()\n\n return () => {\n void cancelSubscription?.()\n }\n }, [update])\n\n return workout\n}\n\nexport default useMostRecentWorkout\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,qBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,mBAAA,GAAAF,sBAAA,CAAAF,OAAA;AAA4D,SAAAE,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAK5D;AACA;AACA;AACA,SAASG,oBAAoBA,CAG3BC,OAA8E,EAAE;EAChF,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAuC,IAAI,CAAC;EAElF,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAACL,OAAO,CAAC;EAElC,IAAAM,gBAAS,EAAC,MAAM;IACdF,UAAU,CAACG,OAAO,GAAGP,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb,MAAMQ,MAAM,GAAG,IAAAC,kBAAW,EAAC,YAAY;IACrC,MAAM;MAAEC,UAAU;MAAEC;IAAa,CAAC,GAAG,MAAM,IAAAC,+BAAsB,EAC/DR,UAAU,CAACG,OACb,CAAC;IAEDL,UAAU,CAAC,MAAM,IAAAW,6BAAoB,EAAC;MACpCH,UAAU;MACVC;IACF,CAAC,CAAC,CAAC;EACL,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAL,gBAAS,EAAC,MAAM;IACd,KAAKE,MAAM,CAAC,CAAC;EACf,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZ,IAAAF,gBAAS,EAAC,MAAM;IACd,IAAIQ,kBAAwD;IAE5D,MAAMC,IAAI,GAAG,MAAAA,CAAA,KAAY;MACvBD,kBAAkB,GAAG,MAAM,IAAAE,2BAAkB,EAC3C,yBAAyB,EACzBR,MACF,CAAC;IACH,CAAC;IACD,KAAKO,IAAI,CAAC,CAAC;IAEX,OAAO,MAAM;MAAA,IAAAE,mBAAA;MACX,OAAAA,mBAAA,GAAKH,kBAAkB,cAAAG,mBAAA,uBAAlBA,mBAAA,CAAqB,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAACT,MAAM,CAAC,CAAC;EAEZ,OAAOP,OAAO;AAChB;AAAC,IAAAiB,QAAA,GAAAC,OAAA,CAAArB,OAAA,GAEcC,oBAAoB","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _querySources = _interopRequireDefault(require("../utils/querySources"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
function useSources(identifier) {
|
|
11
11
|
const [result, setResult] = (0, _react.useState)(null);
|
|
12
12
|
const update = (0, _react.useCallback)(async () => {
|
|
@@ -18,6 +18,5 @@ function useSources(identifier) {
|
|
|
18
18
|
}, [update]);
|
|
19
19
|
return result;
|
|
20
20
|
}
|
|
21
|
-
var _default = useSources;
|
|
22
|
-
exports.default = _default;
|
|
21
|
+
var _default = exports.default = useSources;
|
|
23
22
|
//# sourceMappingURL=useSources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_querySources","_interopRequireDefault","
|
|
1
|
+
{"version":3,"names":["_react","require","_querySources","_interopRequireDefault","e","__esModule","default","useSources","identifier","result","setResult","useState","update","useCallback","res","querySources","useEffect","_default","exports"],"sources":["useSources.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\n\nimport querySources from '../utils/querySources'\n\nimport type {\n HKCategoryTypeIdentifier,\n HKQuantityTypeIdentifier,\n HKSource,\n} from '../native-types'\n\nfunction useSources<\n TIdentifier extends HKCategoryTypeIdentifier | HKQuantityTypeIdentifier\n>(identifier: TIdentifier) {\n const [result, setResult] = useState<readonly HKSource[] | null>(null)\n\n const update = useCallback(async () => {\n const res = await querySources(identifier)\n setResult(res)\n }, [identifier])\n\n useEffect(() => {\n void update()\n }, [update])\n\n return result\n}\n\nexport default useSources\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAgD,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQhD,SAASG,UAAUA,CAEjBC,UAAuB,EAAE;EACzB,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAA6B,IAAI,CAAC;EAEtE,MAAMC,MAAM,GAAG,IAAAC,kBAAW,EAAC,YAAY;IACrC,MAAMC,GAAG,GAAG,MAAM,IAAAC,qBAAY,EAACP,UAAU,CAAC;IAC1CE,SAAS,CAACI,GAAG,CAAC;EAChB,CAAC,EAAE,CAACN,UAAU,CAAC,CAAC;EAEhB,IAAAQ,gBAAS,EAAC,MAAM;IACd,KAAKJ,MAAM,CAAC,CAAC;EACf,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZ,OAAOH,MAAM;AACf;AAAC,IAAAQ,QAAA,GAAAC,OAAA,CAAAZ,OAAA,GAEcC,UAAU","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _useSubscribeToChanges = _interopRequireDefault(require("./useSubscribeToChanges"));
|
|
9
9
|
var _queryStatisticsForQuantity = _interopRequireDefault(require("../utils/queryStatisticsForQuantity"));
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
function useStatisticsForQuantity(identifier, options, from, to, unit) {
|
|
12
12
|
const [result, setResult] = (0, _react.useState)(null);
|
|
13
13
|
const optionsRef = (0, _react.useRef)(options);
|
|
@@ -24,6 +24,5 @@ function useStatisticsForQuantity(identifier, options, from, to, unit) {
|
|
|
24
24
|
(0, _useSubscribeToChanges.default)(identifier, update);
|
|
25
25
|
return result;
|
|
26
26
|
}
|
|
27
|
-
var _default = useStatisticsForQuantity;
|
|
28
|
-
exports.default = _default;
|
|
27
|
+
var _default = exports.default = useStatisticsForQuantity;
|
|
29
28
|
//# sourceMappingURL=useStatisticsForQuantity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_useSubscribeToChanges","_interopRequireDefault","_queryStatisticsForQuantity","
|
|
1
|
+
{"version":3,"names":["_react","require","_useSubscribeToChanges","_interopRequireDefault","_queryStatisticsForQuantity","e","__esModule","default","useStatisticsForQuantity","identifier","options","from","to","unit","result","setResult","useState","optionsRef","useRef","useEffect","current","update","useCallback","res","queryStatisticsForQuantity","useSubscribeToChanges","_default","exports"],"sources":["useStatisticsForQuantity.ts"],"sourcesContent":["import {\n useState, useEffect, useCallback, useRef,\n} from 'react'\n\nimport useSubscribeToChanges from './useSubscribeToChanges'\nimport queryStatisticsForQuantity from '../utils/queryStatisticsForQuantity'\n\nimport type { HKQuantityTypeIdentifier, HKStatisticsOptions, UnitForIdentifier } from '../native-types'\nimport type { QueryStatisticsResponse } from '../types'\n\nfunction useStatisticsForQuantity<TIdentifier extends HKQuantityTypeIdentifier, TUnit extends UnitForIdentifier<TIdentifier> = UnitForIdentifier<TIdentifier>>(\n identifier: TIdentifier,\n options: readonly HKStatisticsOptions[],\n from: Date,\n to?: Date,\n unit?: TUnit,\n) {\n const [result, setResult] = useState<QueryStatisticsResponse<TIdentifier, TUnit> | null>(null)\n\n const optionsRef = useRef(options)\n\n useEffect(() => {\n optionsRef.current = options\n }, [options])\n\n const update = useCallback(async () => {\n const res = await queryStatisticsForQuantity(identifier, optionsRef.current, from, to, unit)\n setResult(res)\n }, [\n identifier, from, to, unit,\n ])\n\n useEffect(() => {\n void update()\n }, [update])\n\n useSubscribeToChanges(identifier, update)\n\n return result\n}\n\nexport default useStatisticsForQuantity\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,sBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,2BAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA4E,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAK5E,SAASG,wBAAwBA,CAC/BC,UAAuB,EACvBC,OAAuC,EACvCC,IAAU,EACVC,EAAS,EACTC,IAAY,EACZ;EACA,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAqD,IAAI,CAAC;EAE9F,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAACR,OAAO,CAAC;EAElC,IAAAS,gBAAS,EAAC,MAAM;IACdF,UAAU,CAACG,OAAO,GAAGV,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEb,MAAMW,MAAM,GAAG,IAAAC,kBAAW,EAAC,YAAY;IACrC,MAAMC,GAAG,GAAG,MAAM,IAAAC,mCAA0B,EAACf,UAAU,EAAEQ,UAAU,CAACG,OAAO,EAAET,IAAI,EAAEC,EAAE,EAAEC,IAAI,CAAC;IAC5FE,SAAS,CAACQ,GAAG,CAAC;EAChB,CAAC,EAAE,CACDd,UAAU,EAAEE,IAAI,EAAEC,EAAE,EAAEC,IAAI,CAC3B,CAAC;EAEF,IAAAM,gBAAS,EAAC,MAAM;IACd,KAAKE,MAAM,CAAC,CAAC;EACf,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEZ,IAAAI,8BAAqB,EAAChB,UAAU,EAAEY,MAAM,CAAC;EAEzC,OAAOP,MAAM;AACf;AAAC,IAAAY,QAAA,GAAAC,OAAA,CAAApB,OAAA,GAEcC,wBAAwB","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _subscribeToChanges = _interopRequireDefault(require("../utils/subscribeToChanges"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
function useSubscribeToChanges(identifier, onChange) {
|
|
11
11
|
const onChangeRef = (0, _react.useRef)(onChange);
|
|
12
12
|
(0, _react.useEffect)(() => {
|
|
@@ -24,6 +24,5 @@ function useSubscribeToChanges(identifier, onChange) {
|
|
|
24
24
|
};
|
|
25
25
|
}, [identifier]);
|
|
26
26
|
}
|
|
27
|
-
var _default = useSubscribeToChanges;
|
|
28
|
-
exports.default = _default;
|
|
27
|
+
var _default = exports.default = useSubscribeToChanges;
|
|
29
28
|
//# sourceMappingURL=useSubscribeToChanges.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_subscribeToChanges","_interopRequireDefault","
|
|
1
|
+
{"version":3,"names":["_react","require","_subscribeToChanges","_interopRequireDefault","e","__esModule","default","useSubscribeToChanges","identifier","onChange","onChangeRef","useRef","useEffect","current","cancelSubscription","init","subscribeToChanges","_cancelSubscription","_default","exports"],"sources":["useSubscribeToChanges.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\n\nimport subscribeToChanges from '../utils/subscribeToChanges'\n\nimport type { HKSampleTypeIdentifier } from '..'\n\nfunction useSubscribeToChanges<TIdentifier extends HKSampleTypeIdentifier>(\n identifier: TIdentifier,\n onChange: () => void,\n): void {\n const onChangeRef = useRef(onChange)\n\n useEffect(() => {\n onChangeRef.current = onChange\n }, [onChange])\n\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n cancelSubscription = await subscribeToChanges(identifier, onChangeRef.current)\n }\n void init()\n\n return () => {\n void cancelSubscription?.()\n }\n }, [identifier])\n}\n\nexport default useSubscribeToChanges\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA4D,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAI5D,SAASG,qBAAqBA,CAC5BC,UAAuB,EACvBC,QAAoB,EACd;EACN,MAAMC,WAAW,GAAG,IAAAC,aAAM,EAACF,QAAQ,CAAC;EAEpC,IAAAG,gBAAS,EAAC,MAAM;IACdF,WAAW,CAACG,OAAO,GAAGJ,QAAQ;EAChC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,IAAAG,gBAAS,EAAC,MAAM;IACd,IAAIE,kBAAwD;IAE5D,MAAMC,IAAI,GAAG,MAAAA,CAAA,KAAY;MACvBD,kBAAkB,GAAG,MAAM,IAAAE,2BAAkB,EAACR,UAAU,EAAEE,WAAW,CAACG,OAAO,CAAC;IAChF,CAAC;IACD,KAAKE,IAAI,CAAC,CAAC;IAEX,OAAO,MAAM;MAAA,IAAAE,mBAAA;MACX,OAAAA,mBAAA,GAAKH,kBAAkB,cAAAG,mBAAA,uBAAlBA,mBAAA,CAAqB,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAACT,UAAU,CAAC,CAAC;AAClB;AAAC,IAAAU,QAAA,GAAAC,OAAA,CAAAb,OAAA,GAEcC,qBAAqB","ignoreList":[]}
|