@kingstinct/react-native-healthkit 4.3.0 → 4.4.2
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/ios/ReactNativeHealthkit.swift +2 -2
- package/lib/commonjs/index.ios.js +123 -104
- package/lib/commonjs/index.ios.js.map +1 -1
- package/lib/commonjs/index.js +50 -37
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native-types.js +127 -106
- package/lib/commonjs/native-types.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/index.ios.js +124 -105
- package/lib/module/index.ios.js.map +1 -1
- package/lib/module/index.js +51 -37
- package/lib/module/index.js.map +1 -1
- package/lib/module/native-types.js +118 -103
- package/lib/module/native-types.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/native-types.d.ts +452 -217
- package/lib/typescript/src/types.d.ts +85 -83
- package/package.json +21 -35
- package/src/index.ios.tsx +299 -273
- package/src/index.tsx +63 -46
- package/src/native-types.ts +310 -301
- package/src/types.ts +113 -107
package/lib/module/index.ios.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
-
import Native, { EventEmitter, HKQuantityTypeIdentifier, HKUnit } from './native-types';
|
|
2
|
+
import Native, { EventEmitter, HKQuantityTypeIdentifier, HKUnit, HKCategoryTypeIdentifier } from './native-types';
|
|
3
3
|
|
|
4
4
|
const getPreferredUnit = async type => {
|
|
5
5
|
const [unit] = await getPreferredUnits([type]);
|
|
@@ -29,22 +29,16 @@ function deserializeWorkout(sample) {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
const deserializCategorySample = sample => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
};
|
|
37
|
-
};
|
|
32
|
+
const deserializCategorySample = sample => ({ ...sample,
|
|
33
|
+
startDate: new Date(sample.startDate),
|
|
34
|
+
endDate: new Date(sample.endDate)
|
|
35
|
+
});
|
|
38
36
|
|
|
39
|
-
const serializeDate = date =>
|
|
40
|
-
return date ? date.toISOString() : new Date(0).toISOString();
|
|
41
|
-
};
|
|
37
|
+
const serializeDate = date => date ? date.toISOString() : new Date(0).toISOString();
|
|
42
38
|
|
|
43
39
|
const prepareOptions = options => {
|
|
44
|
-
var _options$ascending;
|
|
45
|
-
|
|
46
40
|
const limit = !options.limit || options.limit === Infinity ? 0 : options.limit;
|
|
47
|
-
const ascending =
|
|
41
|
+
const ascending = options.ascending ?? limit === 0;
|
|
48
42
|
const from = serializeDate(options.from);
|
|
49
43
|
const to = serializeDate(options.to);
|
|
50
44
|
return {
|
|
@@ -62,6 +56,36 @@ const queryQuantitySamples = async (identifier, options) => {
|
|
|
62
56
|
return quantitySamples.map(deserializeSample);
|
|
63
57
|
};
|
|
64
58
|
|
|
59
|
+
async function getPreferredUnitsTyped(options) {
|
|
60
|
+
let energyUnit = options === null || options === void 0 ? void 0 : options.energyUnit;
|
|
61
|
+
let distanceUnit = options === null || options === void 0 ? void 0 : options.distanceUnit;
|
|
62
|
+
|
|
63
|
+
if (!energyUnit || !distanceUnit) {
|
|
64
|
+
const units = await Native.getPreferredUnits([HKQuantityTypeIdentifier.distanceWalkingRunning, HKQuantityTypeIdentifier.activeEnergyBurned]);
|
|
65
|
+
|
|
66
|
+
if (!energyUnit) {
|
|
67
|
+
energyUnit = units[HKQuantityTypeIdentifier.distanceWalkingRunning];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (!distanceUnit) {
|
|
71
|
+
distanceUnit = units[HKQuantityTypeIdentifier.activeEnergyBurned];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (!energyUnit) {
|
|
76
|
+
energyUnit = HKUnit.Kilocalories;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (!distanceUnit) {
|
|
80
|
+
distanceUnit = HKUnit.Meters;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
energyUnit,
|
|
85
|
+
distanceUnit
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
65
89
|
const subscribeToChanges = async (identifier, callback) => {
|
|
66
90
|
const subscription = EventEmitter.addListener('onChange', _ref => {
|
|
67
91
|
let {
|
|
@@ -72,11 +96,11 @@ const subscribeToChanges = async (identifier, callback) => {
|
|
|
72
96
|
callback();
|
|
73
97
|
}
|
|
74
98
|
});
|
|
75
|
-
const queryId = await Native.subscribeToObserverQuery(identifier).catch(error => {
|
|
99
|
+
const queryId = await Native.subscribeToObserverQuery(identifier).catch(async error => {
|
|
76
100
|
subscription.remove();
|
|
77
101
|
return Promise.reject(error);
|
|
78
102
|
});
|
|
79
|
-
return () => {
|
|
103
|
+
return async () => {
|
|
80
104
|
subscription.remove();
|
|
81
105
|
return Native.unsubscribeQuery(queryId);
|
|
82
106
|
};
|
|
@@ -85,7 +109,7 @@ const subscribeToChanges = async (identifier, callback) => {
|
|
|
85
109
|
const getMostRecentQuantitySample = async (identifier, unit) => {
|
|
86
110
|
const samples = await queryQuantitySamples(identifier, {
|
|
87
111
|
limit: 1,
|
|
88
|
-
unit
|
|
112
|
+
unit
|
|
89
113
|
});
|
|
90
114
|
return samples[0];
|
|
91
115
|
};
|
|
@@ -100,17 +124,20 @@ function useMostRecentWorkout(options) {
|
|
|
100
124
|
energyUnit,
|
|
101
125
|
distanceUnit
|
|
102
126
|
} = await getPreferredUnitsTyped(options);
|
|
103
|
-
cancelSubscription = await subscribeToChanges('HKWorkoutTypeIdentifier', () => {
|
|
104
|
-
getMostRecentWorkout({
|
|
127
|
+
cancelSubscription = await subscribeToChanges('HKWorkoutTypeIdentifier', async () => {
|
|
128
|
+
const w = await getMostRecentWorkout({
|
|
105
129
|
energyUnit,
|
|
106
130
|
distanceUnit
|
|
107
|
-
})
|
|
131
|
+
});
|
|
132
|
+
setWorkout(w);
|
|
108
133
|
});
|
|
109
134
|
};
|
|
110
135
|
|
|
111
|
-
init();
|
|
136
|
+
void init();
|
|
112
137
|
return () => {
|
|
113
|
-
|
|
138
|
+
var _cancelSubscription;
|
|
139
|
+
|
|
140
|
+
void ((_cancelSubscription = cancelSubscription) === null || _cancelSubscription === void 0 ? void 0 : _cancelSubscription());
|
|
114
141
|
};
|
|
115
142
|
}, [options]);
|
|
116
143
|
return workout;
|
|
@@ -124,15 +151,6 @@ const getMostRecentCategorySample = async identifier => {
|
|
|
124
151
|
return samples[0];
|
|
125
152
|
};
|
|
126
153
|
|
|
127
|
-
function useMostRecentCategorySample(identifier) {
|
|
128
|
-
const [category, setCategory] = useState(null);
|
|
129
|
-
const updater = useCallback(() => {
|
|
130
|
-
getMostRecentCategorySample(identifier).then(setCategory);
|
|
131
|
-
}, [identifier]);
|
|
132
|
-
useSubscribeToChanges(identifier, updater);
|
|
133
|
-
return category;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
154
|
function useSubscribeToChanges(identifier, onChange) {
|
|
137
155
|
useEffect(() => {
|
|
138
156
|
let cancelSubscription;
|
|
@@ -141,13 +159,26 @@ function useSubscribeToChanges(identifier, onChange) {
|
|
|
141
159
|
cancelSubscription = await subscribeToChanges(identifier, onChange);
|
|
142
160
|
};
|
|
143
161
|
|
|
144
|
-
init();
|
|
162
|
+
void init();
|
|
145
163
|
return () => {
|
|
146
|
-
|
|
164
|
+
var _cancelSubscription2;
|
|
165
|
+
|
|
166
|
+
void ((_cancelSubscription2 = cancelSubscription) === null || _cancelSubscription2 === void 0 ? void 0 : _cancelSubscription2());
|
|
147
167
|
};
|
|
148
168
|
}, [identifier, onChange]);
|
|
149
169
|
}
|
|
150
170
|
|
|
171
|
+
useSubscribeToChanges(HKCategoryTypeIdentifier.appleStandHour, () => {});
|
|
172
|
+
|
|
173
|
+
function useMostRecentCategorySample(identifier) {
|
|
174
|
+
const [category, setCategory] = useState(null);
|
|
175
|
+
const updater = useCallback(() => {
|
|
176
|
+
void getMostRecentCategorySample(identifier).then(setCategory);
|
|
177
|
+
}, [identifier]);
|
|
178
|
+
useSubscribeToChanges(identifier, updater);
|
|
179
|
+
return category;
|
|
180
|
+
}
|
|
181
|
+
|
|
151
182
|
function useMostRecentQuantitySample(identifier, unit) {
|
|
152
183
|
const [lastSample, setLastSample] = useState(null);
|
|
153
184
|
useEffect(() => {
|
|
@@ -155,22 +186,23 @@ function useMostRecentQuantitySample(identifier, unit) {
|
|
|
155
186
|
|
|
156
187
|
const init = async () => {
|
|
157
188
|
const actualUnit = await ensureUnit(identifier, unit);
|
|
158
|
-
cancelSubscription = await subscribeToChanges(identifier, () => {
|
|
159
|
-
getMostRecentQuantitySample(identifier, actualUnit)
|
|
160
|
-
|
|
161
|
-
});
|
|
189
|
+
cancelSubscription = await subscribeToChanges(identifier, async () => {
|
|
190
|
+
const value = await getMostRecentQuantitySample(identifier, actualUnit);
|
|
191
|
+
setLastSample(value);
|
|
162
192
|
});
|
|
163
193
|
};
|
|
164
194
|
|
|
165
|
-
init();
|
|
195
|
+
void init();
|
|
166
196
|
return () => {
|
|
167
|
-
|
|
197
|
+
var _cancelSubscription3;
|
|
198
|
+
|
|
199
|
+
void ((_cancelSubscription3 = cancelSubscription) === null || _cancelSubscription3 === void 0 ? void 0 : _cancelSubscription3());
|
|
168
200
|
};
|
|
169
201
|
}, [identifier, unit]);
|
|
170
202
|
return lastSample;
|
|
171
203
|
}
|
|
172
204
|
|
|
173
|
-
const saveQuantitySample = (identifier, unit, value, options) => {
|
|
205
|
+
const saveQuantitySample = async (identifier, unit, value, options) => {
|
|
174
206
|
const start = (options === null || options === void 0 ? void 0 : options.start) || (options === null || options === void 0 ? void 0 : options.end) || new Date();
|
|
175
207
|
const end = (options === null || options === void 0 ? void 0 : options.end) || (options === null || options === void 0 ? void 0 : options.start) || new Date();
|
|
176
208
|
const metadata = (options === null || options === void 0 ? void 0 : options.metadata) || {};
|
|
@@ -195,18 +227,14 @@ const queryStatisticsForQuantity = async (identifier, options, from, to, unit) =
|
|
|
195
227
|
return response;
|
|
196
228
|
};
|
|
197
229
|
|
|
198
|
-
const requestAuthorization = function (read) {
|
|
230
|
+
const requestAuthorization = async function (read) {
|
|
199
231
|
let write = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
200
|
-
const readPermissions = read.reduce((obj, cur) => {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
return { ...obj,
|
|
207
|
-
[cur]: true
|
|
208
|
-
};
|
|
209
|
-
}, {});
|
|
232
|
+
const readPermissions = read.reduce((obj, cur) => ({ ...obj,
|
|
233
|
+
[cur]: true
|
|
234
|
+
}), {});
|
|
235
|
+
const writePermissions = write.reduce((obj, cur) => ({ ...obj,
|
|
236
|
+
[cur]: true
|
|
237
|
+
}), {});
|
|
210
238
|
return Native.requestAuthorization(writePermissions, readPermissions);
|
|
211
239
|
};
|
|
212
240
|
|
|
@@ -215,18 +243,14 @@ const getDateOfBirth = async () => {
|
|
|
215
243
|
return new Date(dateOfBirth);
|
|
216
244
|
};
|
|
217
245
|
|
|
218
|
-
const getRequestStatusForAuthorization = function (read) {
|
|
246
|
+
const getRequestStatusForAuthorization = async function (read) {
|
|
219
247
|
let write = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
220
|
-
const readPermissions = read.reduce((obj, cur) => {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
return { ...obj,
|
|
227
|
-
[cur]: true
|
|
228
|
-
};
|
|
229
|
-
}, {});
|
|
248
|
+
const readPermissions = read.reduce((obj, cur) => ({ ...obj,
|
|
249
|
+
[cur]: true
|
|
250
|
+
}), {});
|
|
251
|
+
const writePermissions = write.reduce((obj, cur) => ({ ...obj,
|
|
252
|
+
[cur]: true
|
|
253
|
+
}), {});
|
|
230
254
|
return Native.getRequestStatusForAuthorization(writePermissions, readPermissions);
|
|
231
255
|
};
|
|
232
256
|
|
|
@@ -236,36 +260,6 @@ const queryCategorySamples = async (identifier, options) => {
|
|
|
236
260
|
return results.map(deserializCategorySample);
|
|
237
261
|
};
|
|
238
262
|
|
|
239
|
-
async function getPreferredUnitsTyped(options) {
|
|
240
|
-
let energyUnit = options === null || options === void 0 ? void 0 : options.energyUnit;
|
|
241
|
-
let distanceUnit = options === null || options === void 0 ? void 0 : options.distanceUnit;
|
|
242
|
-
|
|
243
|
-
if (!energyUnit || !distanceUnit) {
|
|
244
|
-
const units = await Native.getPreferredUnits([HKQuantityTypeIdentifier.distanceWalkingRunning, HKQuantityTypeIdentifier.activeEnergyBurned]);
|
|
245
|
-
|
|
246
|
-
if (!energyUnit) {
|
|
247
|
-
energyUnit = units[HKQuantityTypeIdentifier.distanceWalkingRunning];
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
if (!distanceUnit) {
|
|
251
|
-
distanceUnit = units[HKQuantityTypeIdentifier.activeEnergyBurned];
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
if (!energyUnit) {
|
|
256
|
-
energyUnit = HKUnit.Kilocalories;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
if (!distanceUnit) {
|
|
260
|
-
distanceUnit = HKUnit.Meters;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
return {
|
|
264
|
-
energyUnit,
|
|
265
|
-
distanceUnit
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
|
|
269
263
|
const queryWorkouts = async options => {
|
|
270
264
|
const {
|
|
271
265
|
energyUnit,
|
|
@@ -286,7 +280,7 @@ const getMostRecentWorkout = async options => {
|
|
|
286
280
|
return workouts[0];
|
|
287
281
|
};
|
|
288
282
|
|
|
289
|
-
function saveCategorySample(identifier, value, options) {
|
|
283
|
+
async function saveCategorySample(identifier, value, options) {
|
|
290
284
|
const start = (options === null || options === void 0 ? void 0 : options.start) || (options === null || options === void 0 ? void 0 : options.end) || new Date();
|
|
291
285
|
const end = (options === null || options === void 0 ? void 0 : options.end) || (options === null || options === void 0 ? void 0 : options.start) || new Date();
|
|
292
286
|
const metadata = (options === null || options === void 0 ? void 0 : options.metadata) || {};
|
|
@@ -298,13 +292,12 @@ const getPreferredUnits = async identifiers => {
|
|
|
298
292
|
return identifiers.map(i => units[i]);
|
|
299
293
|
};
|
|
300
294
|
|
|
301
|
-
const buildUnitWithPrefix = (prefix, unit) => {
|
|
302
|
-
return `${prefix}${unit}`;
|
|
303
|
-
};
|
|
295
|
+
const buildUnitWithPrefix = (prefix, unit) => `${prefix}${unit}`;
|
|
304
296
|
|
|
305
297
|
function deserializeCorrelation(s) {
|
|
306
298
|
return { ...s,
|
|
307
299
|
objects: s.objects.map(o => {
|
|
300
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
308
301
|
// @ts-ignore
|
|
309
302
|
if (o.quantity !== undefined) {
|
|
310
303
|
return deserializeSample(o);
|
|
@@ -333,29 +326,27 @@ const saveCorrelationSample = async (typeIdentifier, samples, options) => {
|
|
|
333
326
|
return Native.saveCorrelationSample(typeIdentifier, samples, start, end, ensureMetadata(options === null || options === void 0 ? void 0 : options.metadata));
|
|
334
327
|
};
|
|
335
328
|
|
|
336
|
-
const saveWorkoutSample = (typeIdentifier, quantities, _start, options) => {
|
|
329
|
+
const saveWorkoutSample = async (typeIdentifier, quantities, _start, options) => {
|
|
337
330
|
const start = _start.toISOString();
|
|
338
331
|
|
|
339
332
|
const end = ((options === null || options === void 0 ? void 0 : options.end) || new Date()).toISOString();
|
|
340
333
|
return Native.saveWorkoutSample(typeIdentifier, quantities, start, end, ensureMetadata(options === null || options === void 0 ? void 0 : options.metadata));
|
|
341
334
|
};
|
|
342
335
|
|
|
343
|
-
const getWorkoutRoutes = workoutUUID =>
|
|
344
|
-
return Native.getWorkoutRoutes(workoutUUID);
|
|
345
|
-
};
|
|
336
|
+
const getWorkoutRoutes = async workoutUUID => Native.getWorkoutRoutes(workoutUUID);
|
|
346
337
|
|
|
347
338
|
const Healthkit = {
|
|
348
|
-
authorizationStatusFor: Native.authorizationStatusFor,
|
|
349
|
-
isHealthDataAvailable: Native.isHealthDataAvailable,
|
|
339
|
+
authorizationStatusFor: Native.authorizationStatusFor.bind(Native),
|
|
340
|
+
isHealthDataAvailable: Native.isHealthDataAvailable.bind(Native),
|
|
350
341
|
buildUnitWithPrefix,
|
|
351
342
|
disableAllBackgroundDelivery: Native.disableAllBackgroundDelivery,
|
|
352
343
|
disableBackgroundDelivery: Native.disableBackgroundDelivery,
|
|
353
344
|
enableBackgroundDelivery: Native.enableBackgroundDelivery,
|
|
354
345
|
// simple convenience getters
|
|
355
|
-
getBiologicalSex: Native.getBiologicalSex,
|
|
356
|
-
getFitzpatrickSkinType: Native.getFitzpatrickSkinType,
|
|
346
|
+
getBiologicalSex: Native.getBiologicalSex.bind(Native),
|
|
347
|
+
getFitzpatrickSkinType: Native.getFitzpatrickSkinType.bind(Native),
|
|
357
348
|
getWheelchairUse: Native.getWheelchairUse,
|
|
358
|
-
getBloodType: Native.getBloodType,
|
|
349
|
+
getBloodType: Native.getBloodType.bind(Native),
|
|
359
350
|
getDateOfBirth,
|
|
360
351
|
getMostRecentQuantitySample,
|
|
361
352
|
getMostRecentCategorySample,
|
|
@@ -382,7 +373,35 @@ const Healthkit = {
|
|
|
382
373
|
useMostRecentCategorySample,
|
|
383
374
|
useMostRecentQuantitySample,
|
|
384
375
|
useMostRecentWorkout,
|
|
385
|
-
useSubscribeToChanges
|
|
376
|
+
useSubscribeToChanges,
|
|
377
|
+
useIsHealthDataAvailable: () => {
|
|
378
|
+
const [isAvailable, setIsAvailable] = useState(null);
|
|
379
|
+
useEffect(() => {
|
|
380
|
+
const init = async () => {
|
|
381
|
+
const res = await Native.isHealthDataAvailable();
|
|
382
|
+
setIsAvailable(res);
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
void init();
|
|
386
|
+
}, []);
|
|
387
|
+
return isAvailable;
|
|
388
|
+
},
|
|
389
|
+
useHealthkitAuthorization: (read, write) => {
|
|
390
|
+
const [status, setStatus] = useState(null);
|
|
391
|
+
const refreshAuthStatus = useCallback(async () => {
|
|
392
|
+
const auth = await getRequestStatusForAuthorization(read, write);
|
|
393
|
+
setStatus(auth);
|
|
394
|
+
return auth;
|
|
395
|
+
}, []);
|
|
396
|
+
const request = useCallback(async () => {
|
|
397
|
+
await requestAuthorization(read, write);
|
|
398
|
+
return refreshAuthStatus();
|
|
399
|
+
}, []);
|
|
400
|
+
useEffect(() => {
|
|
401
|
+
void refreshAuthStatus();
|
|
402
|
+
}, []);
|
|
403
|
+
return [status, request];
|
|
404
|
+
}
|
|
386
405
|
};
|
|
387
406
|
export * from './native-types';
|
|
388
407
|
export * from './types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useState","Native","EventEmitter","HKQuantityTypeIdentifier","HKUnit","getPreferredUnit","type","unit","getPreferredUnits","ensureUnit","providedUnit","deserializeSample","sample","startDate","Date","endDate","deserializeWorkout","deserializCategorySample","serializeDate","date","toISOString","prepareOptions","options","limit","Infinity","ascending","from","to","queryQuantitySamples","identifier","opts","quantitySamples","map","subscribeToChanges","callback","subscription","addListener","typeIdentifier","queryId","subscribeToObserverQuery","catch","error","remove","Promise","reject","unsubscribeQuery","getMostRecentQuantitySample","samples","useMostRecentWorkout","workout","setWorkout","cancelSubscription","init","energyUnit","distanceUnit","getPreferredUnitsTyped","getMostRecentWorkout","then","getMostRecentCategorySample","queryCategorySamples","useMostRecentCategorySample","category","setCategory","updater","useSubscribeToChanges","onChange","useMostRecentQuantitySample","lastSample","setLastSample","actualUnit","value","saveQuantitySample","start","end","metadata","queryStatisticsForQuantity","toDate","mostRecentQuantityDateInterval","rawResponse","response","requestAuthorization","read","write","readPermissions","reduce","obj","cur","writePermissions","getDateOfBirth","dateOfBirth","getRequestStatusForAuthorization","results","units","distanceWalkingRunning","activeEnergyBurned","Kilocalories","Meters","queryWorkouts","workouts","queryWorkoutSamples","saveCategorySample","identifiers","i","buildUnitWithPrefix","prefix","deserializeCorrelation","s","objects","o","quantity","undefined","ensureMetadata","queryCorrelationSamples","correlations","saveCorrelationSample","saveWorkoutSample","quantities","_start","getWorkoutRoutes","workoutUUID","Healthkit","authorizationStatusFor","isHealthDataAvailable","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getFitzpatrickSkinType","getWheelchairUse","getBloodType"],"sources":["index.ios.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport Native, {\n EventEmitter,\n HKCategorySampleRaw,\n HKCategoryTypeIdentifier,\n HKCategoryValueForIdentifier,\n HKCharacteristicTypeIdentifier,\n HKCorrelationRaw,\n HKCorrelationTypeIdentifier,\n HKQuantitySampleRaw,\n HKQuantityTypeIdentifier,\n HKSampleTypeIdentifier,\n HKUnit,\n HKUnitSI,\n HKUnitSIPrefix,\n HKWorkoutRaw,\n MetadataMapperForCategoryIdentifier,\n} from './native-types';\nimport type {\n GenericQueryOptions,\n GetMostRecentCategorySampleFn,\n GetMostRecentQuantitySampleFn,\n GetMostRecentWorkoutFn,\n GetPreferredUnitFn,\n GetPreferredUnitsFn,\n GetWorkoutRoutesFn,\n HKCategorySample,\n HKCorrelation,\n HKQuantitySample,\n HKWorkout,\n QueryCategorySamplesFn,\n QueryCorrelationSamplesFn,\n QueryQuantitySamplesFn,\n QueryStatisticsForQuantityFn,\n QueryWorkoutsFn,\n ReactNativeHealthkit,\n SaveCorrelationSampleFn,\n SaveQuantitySampleFn,\n SaveWorkoutSampleFn,\n SubscribeToChangesFn,\n} from './types';\n\nconst getPreferredUnit: GetPreferredUnitFn = async (type) => {\n const [unit] = await getPreferredUnits([type]);\n return unit;\n};\n\nconst ensureUnit = async <TUnit extends HKUnit>(\n type: HKQuantityTypeIdentifier,\n providedUnit?: TUnit\n) => {\n if (providedUnit) {\n return providedUnit;\n }\n const unit = await Native.getPreferredUnits([type]);\n return unit[type] as TUnit;\n};\n\nfunction deserializeSample<\n TIdentifier extends HKQuantityTypeIdentifier,\n TUnit extends HKUnit\n>(\n sample: HKQuantitySampleRaw<TIdentifier, TUnit>\n): HKQuantitySample<TIdentifier, TUnit> {\n return {\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n };\n}\n\nfunction deserializeWorkout<TEnergy extends HKUnit, TDistance extends HKUnit>(\n sample: HKWorkoutRaw<TEnergy, TDistance>\n): HKWorkout<TEnergy, TDistance> {\n return {\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n };\n}\n\nconst deserializCategorySample = <T extends HKCategoryTypeIdentifier>(\n sample: HKCategorySampleRaw<T>\n): HKCategorySample<T> => {\n return {\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n };\n};\n\nconst serializeDate = (date?: Date | null): string => {\n return date ? date.toISOString() : new Date(0).toISOString();\n};\n\nconst prepareOptions = (options: GenericQueryOptions) => {\n const limit =\n !options.limit || options.limit === Infinity ? 0 : options.limit;\n const ascending = options.ascending ?? limit === 0;\n const from = serializeDate(options.from);\n const to = serializeDate(options.to);\n return { limit, ascending, from, to };\n};\n\nconst queryQuantitySamples: QueryQuantitySamplesFn = async (\n identifier,\n options\n) => {\n const unit = await ensureUnit(identifier, options.unit);\n const opts = prepareOptions(options);\n\n const quantitySamples = await Native.queryQuantitySamples(\n identifier,\n unit,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending\n );\n\n return quantitySamples.map(deserializeSample);\n};\n\nconst subscribeToChanges: SubscribeToChangesFn = async (\n identifier,\n callback\n) => {\n const subscription = EventEmitter.addListener(\n 'onChange',\n ({ typeIdentifier }) => {\n if (typeIdentifier === identifier) {\n callback();\n }\n }\n );\n\n const queryId = await Native.subscribeToObserverQuery(identifier).catch(\n (error) => {\n subscription.remove();\n return Promise.reject(error);\n }\n );\n\n return () => {\n subscription.remove();\n return Native.unsubscribeQuery(queryId);\n };\n};\n\nconst getMostRecentQuantitySample: GetMostRecentQuantitySampleFn = async (\n identifier,\n unit\n) => {\n const samples = await queryQuantitySamples(identifier, {\n limit: 1,\n unit: unit,\n });\n return samples[0];\n};\n\nfunction useMostRecentWorkout<\n TEnergy extends HKUnit,\n TDistance extends HKUnit\n>(options?: { energyUnit?: TEnergy; distanceUnit?: TDistance }) {\n const [workout, setWorkout] = useState<HKWorkout<TEnergy, TDistance> | null>(\n null\n );\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined;\n\n const init = async () => {\n const { energyUnit, distanceUnit } = await getPreferredUnitsTyped(\n options\n );\n\n cancelSubscription = await subscribeToChanges(\n 'HKWorkoutTypeIdentifier',\n () => {\n getMostRecentWorkout({ energyUnit, distanceUnit }).then(setWorkout);\n }\n );\n };\n init();\n return () => {\n cancelSubscription && cancelSubscription();\n };\n }, [options]);\n return workout;\n}\n\nconst getMostRecentCategorySample: GetMostRecentCategorySampleFn = async (\n identifier\n) => {\n const samples = await queryCategorySamples(identifier, {\n limit: 1,\n ascending: false,\n });\n\n return samples[0];\n};\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 getMostRecentCategorySample(identifier).then(setCategory);\n }, [identifier]);\n\n useSubscribeToChanges(identifier, updater);\n\n return category;\n}\n\nfunction useSubscribeToChanges<TIdentifier extends HKSampleTypeIdentifier>(\n identifier: TIdentifier,\n onChange: () => void\n): void {\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined;\n\n const init = async () => {\n cancelSubscription = await subscribeToChanges(identifier, onChange);\n };\n init();\n\n return () => {\n cancelSubscription && cancelSubscription();\n };\n }, [identifier, onChange]);\n}\n\nfunction useMostRecentQuantitySample<\n TIdentifier extends HKQuantityTypeIdentifier,\n TUnit extends HKUnit = HKUnit\n>(identifier: TIdentifier, unit?: TUnit) {\n const [lastSample, setLastSample] = useState<HKQuantitySample<\n TIdentifier,\n TUnit\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 cancelSubscription = await subscribeToChanges(identifier, () => {\n getMostRecentQuantitySample(identifier, actualUnit).then((value) => {\n setLastSample(value);\n });\n });\n };\n init();\n\n return () => {\n cancelSubscription && cancelSubscription();\n };\n }, [identifier, unit]);\n\n return lastSample;\n}\n\nconst saveQuantitySample: SaveQuantitySampleFn = (\n identifier,\n unit,\n value,\n options\n) => {\n const start = options?.start || options?.end || new Date();\n const end = options?.end || options?.start || new Date();\n const metadata = options?.metadata || {};\n\n return Native.saveQuantitySample(\n identifier,\n unit,\n value,\n start.toISOString(),\n end.toISOString(),\n metadata\n );\n};\n\nconst queryStatisticsForQuantity: QueryStatisticsForQuantityFn = async (\n identifier,\n options,\n from,\n to,\n unit\n) => {\n const actualUnit = await ensureUnit(identifier, unit);\n const toDate = to || new Date();\n const { mostRecentQuantityDateInterval, ...rawResponse } =\n await Native.queryStatisticsForQuantity(\n identifier,\n actualUnit,\n from.toISOString(),\n toDate.toISOString(),\n options\n );\n\n const response = {\n ...rawResponse,\n ...(mostRecentQuantityDateInterval\n ? {\n mostRecentQuantityDateInterval: {\n from: new Date(mostRecentQuantityDateInterval.from),\n to: new Date(mostRecentQuantityDateInterval.to),\n },\n }\n : {}),\n };\n\n return response;\n};\n\nconst requestAuthorization = (\n read: (HKCharacteristicTypeIdentifier | HKSampleTypeIdentifier)[],\n write: HKSampleTypeIdentifier[] = []\n): Promise<boolean> => {\n const readPermissions = read.reduce((obj, cur) => {\n return { ...obj, [cur]: true };\n }, {});\n\n const writePermissions = write.reduce((obj, cur) => {\n return { ...obj, [cur]: true };\n }, {});\n\n return Native.requestAuthorization(writePermissions, readPermissions);\n};\n\nconst getDateOfBirth = async () => {\n const dateOfBirth = await Native.getDateOfBirth();\n return new Date(dateOfBirth);\n};\n\nconst getRequestStatusForAuthorization = (\n read: (HKCharacteristicTypeIdentifier | HKSampleTypeIdentifier)[],\n write: HKSampleTypeIdentifier[] = []\n) => {\n const readPermissions = read.reduce((obj, cur) => {\n return { ...obj, [cur]: true };\n }, {});\n\n const writePermissions = write.reduce((obj, cur) => {\n return { ...obj, [cur]: true };\n }, {});\n\n return Native.getRequestStatusForAuthorization(\n writePermissions,\n readPermissions\n );\n};\n\nconst queryCategorySamples: QueryCategorySamplesFn = async (\n identifier,\n options\n) => {\n const opts = prepareOptions(options);\n const results = await Native.queryCategorySamples(\n identifier,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending\n );\n\n return results.map(deserializCategorySample);\n};\n\nasync function getPreferredUnitsTyped<\n TEnergy extends HKUnit,\n TDistance extends HKUnit\n>(options?: { energyUnit?: TEnergy; distanceUnit?: TDistance }) {\n let energyUnit = options?.energyUnit;\n let distanceUnit = options?.distanceUnit;\n if (!energyUnit || !distanceUnit) {\n const units = await Native.getPreferredUnits([\n HKQuantityTypeIdentifier.distanceWalkingRunning,\n HKQuantityTypeIdentifier.activeEnergyBurned,\n ]);\n if (!energyUnit) {\n energyUnit = units[HKQuantityTypeIdentifier.distanceWalkingRunning] as\n | TEnergy\n | undefined;\n }\n if (!distanceUnit) {\n distanceUnit = units[HKQuantityTypeIdentifier.activeEnergyBurned] as\n | TDistance\n | undefined;\n }\n }\n if (!energyUnit) {\n energyUnit = HKUnit.Kilocalories as TEnergy;\n }\n if (!distanceUnit) {\n distanceUnit = HKUnit.Meters as TDistance;\n }\n return { energyUnit, distanceUnit };\n}\n\nconst queryWorkouts: QueryWorkoutsFn = async (options) => {\n const { energyUnit, distanceUnit } = await getPreferredUnitsTyped(options);\n const opts = prepareOptions(options);\n\n const workouts = await Native.queryWorkoutSamples(\n energyUnit,\n distanceUnit,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending\n );\n\n return workouts.map(deserializeWorkout);\n};\n\nconst getMostRecentWorkout: GetMostRecentWorkoutFn = async (options) => {\n const workouts = await queryWorkouts({\n limit: 1,\n ascending: false,\n energyUnit: options?.energyUnit,\n distanceUnit: options?.distanceUnit,\n });\n\n return workouts[0];\n};\n\nfunction saveCategorySample<T extends HKCategoryTypeIdentifier>(\n identifier: T,\n value: HKCategoryValueForIdentifier<T>,\n options?: {\n start?: Date;\n end?: Date;\n metadata?: MetadataMapperForCategoryIdentifier<T>;\n }\n) {\n const start = options?.start || options?.end || new Date();\n const end = options?.end || options?.start || new Date();\n const metadata = options?.metadata || {};\n\n return Native.saveCategorySample(\n identifier,\n value,\n start.toISOString(),\n end.toISOString(),\n metadata || {}\n );\n}\n\nconst getPreferredUnits: GetPreferredUnitsFn = async (identifiers) => {\n const units = await Native.getPreferredUnits(identifiers);\n return identifiers.map((i) => units[i]);\n};\n\nconst buildUnitWithPrefix = (prefix: HKUnitSIPrefix, unit: HKUnitSI) => {\n return `${prefix}${unit}` as HKUnit;\n};\n\nfunction deserializeCorrelation<\n TIdentifier extends HKCorrelationTypeIdentifier\n>(s: HKCorrelationRaw<TIdentifier>): HKCorrelation<TIdentifier> {\n return {\n ...s,\n objects: s.objects.map((o) => {\n // @ts-ignore\n if (o.quantity !== undefined) {\n return deserializeSample(o as HKQuantitySampleRaw);\n }\n\n return deserializCategorySample(o as HKCategorySampleRaw);\n }),\n endDate: new Date(s.endDate),\n startDate: new Date(s.startDate),\n };\n}\n\nfunction ensureMetadata<TMetadata>(metadata?: TMetadata) {\n return metadata || ({} as TMetadata);\n}\n\nconst queryCorrelationSamples: QueryCorrelationSamplesFn = async (\n typeIdentifier,\n options\n) => {\n const opts = prepareOptions(options);\n const correlations = await Native.queryCorrelationSamples(\n typeIdentifier,\n opts.from,\n opts.to\n );\n\n return correlations.map(deserializeCorrelation);\n};\n\nconst saveCorrelationSample: SaveCorrelationSampleFn = async (\n typeIdentifier,\n samples,\n options\n) => {\n const start = (options?.start || new Date()).toISOString();\n const end = (options?.end || new Date()).toISOString();\n\n return Native.saveCorrelationSample(\n typeIdentifier,\n samples,\n start,\n end,\n ensureMetadata(options?.metadata)\n );\n};\n\nconst saveWorkoutSample: SaveWorkoutSampleFn = (\n typeIdentifier,\n quantities,\n _start,\n options\n) => {\n const start = _start.toISOString();\n const end = (options?.end || new Date()).toISOString();\n\n return Native.saveWorkoutSample(\n typeIdentifier,\n quantities,\n start,\n end,\n ensureMetadata(options?.metadata)\n );\n};\n\nconst getWorkoutRoutes: GetWorkoutRoutesFn = (workoutUUID: string) => {\n return Native.getWorkoutRoutes(workoutUUID);\n};\n\nconst Healthkit: ReactNativeHealthkit = {\n authorizationStatusFor: Native.authorizationStatusFor,\n\n isHealthDataAvailable: Native.isHealthDataAvailable,\n\n buildUnitWithPrefix,\n\n disableAllBackgroundDelivery: Native.disableAllBackgroundDelivery,\n disableBackgroundDelivery: Native.disableBackgroundDelivery,\n enableBackgroundDelivery: Native.enableBackgroundDelivery,\n\n // simple convenience getters\n getBiologicalSex: Native.getBiologicalSex,\n getFitzpatrickSkinType: Native.getFitzpatrickSkinType,\n getWheelchairUse: Native.getWheelchairUse,\n getBloodType: Native.getBloodType,\n getDateOfBirth,\n\n getMostRecentQuantitySample,\n getMostRecentCategorySample,\n getMostRecentWorkout,\n\n getPreferredUnit,\n getPreferredUnits,\n getRequestStatusForAuthorization,\n\n getWorkoutRoutes,\n\n // query methods\n queryCategorySamples,\n queryCorrelationSamples,\n queryQuantitySamples,\n queryStatisticsForQuantity,\n queryWorkouts,\n\n requestAuthorization,\n\n // save methods\n saveCategorySample,\n saveCorrelationSample,\n saveQuantitySample,\n saveWorkoutSample,\n\n // subscriptions\n subscribeToChanges,\n\n // hooks\n useMostRecentCategorySample,\n\n useMostRecentQuantitySample,\n useMostRecentWorkout,\n\n useSubscribeToChanges,\n};\n\nexport * from './native-types';\nexport * from './types';\n\nexport default Healthkit;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useState","Native","EventEmitter","HKQuantityTypeIdentifier","HKUnit","HKCategoryTypeIdentifier","getPreferredUnit","type","unit","getPreferredUnits","ensureUnit","providedUnit","deserializeSample","sample","startDate","Date","endDate","deserializeWorkout","deserializCategorySample","serializeDate","date","toISOString","prepareOptions","options","limit","Infinity","ascending","from","to","queryQuantitySamples","identifier","opts","quantitySamples","map","getPreferredUnitsTyped","energyUnit","distanceUnit","units","distanceWalkingRunning","activeEnergyBurned","Kilocalories","Meters","subscribeToChanges","callback","subscription","addListener","typeIdentifier","queryId","subscribeToObserverQuery","catch","error","remove","Promise","reject","unsubscribeQuery","getMostRecentQuantitySample","samples","useMostRecentWorkout","workout","setWorkout","cancelSubscription","init","w","getMostRecentWorkout","getMostRecentCategorySample","queryCategorySamples","useSubscribeToChanges","onChange","appleStandHour","useMostRecentCategorySample","category","setCategory","updater","then","useMostRecentQuantitySample","lastSample","setLastSample","actualUnit","value","saveQuantitySample","start","end","metadata","queryStatisticsForQuantity","toDate","mostRecentQuantityDateInterval","rawResponse","response","requestAuthorization","read","write","readPermissions","reduce","obj","cur","writePermissions","getDateOfBirth","dateOfBirth","getRequestStatusForAuthorization","results","queryWorkouts","workouts","queryWorkoutSamples","saveCategorySample","identifiers","i","buildUnitWithPrefix","prefix","deserializeCorrelation","s","objects","o","quantity","undefined","ensureMetadata","queryCorrelationSamples","correlations","saveCorrelationSample","saveWorkoutSample","quantities","_start","getWorkoutRoutes","workoutUUID","Healthkit","authorizationStatusFor","bind","isHealthDataAvailable","disableAllBackgroundDelivery","disableBackgroundDelivery","enableBackgroundDelivery","getBiologicalSex","getFitzpatrickSkinType","getWheelchairUse","getBloodType","useIsHealthDataAvailable","isAvailable","setIsAvailable","res","useHealthkitAuthorization","status","setStatus","refreshAuthStatus","auth","request"],"sources":["index.ios.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\n\nimport Native, {\n EventEmitter,\n HKQuantityTypeIdentifier,\n HKUnit,\n HKCategoryTypeIdentifier,\n} from './native-types'\n\nimport type {\n HealthkitReadAuthorization,\n HealthkitWriteAuthorization,\n HKAuthorizationRequestStatus,\n HKCategorySampleRaw,\n HKCategoryValueForIdentifier,\n HKCorrelationRaw,\n HKCorrelationTypeIdentifier,\n HKQuantitySampleRaw,\n HKUnitSI,\n HKUnitSIPrefix,\n HKWorkoutRaw,\n MetadataMapperForCategoryIdentifier,\n ReadPermissions,\n SampleTypeIdentifier,\n WritePermissions,\n} from './native-types'\nimport type {\n GenericQueryOptions,\n GetMostRecentCategorySampleFn,\n GetMostRecentQuantitySampleFn,\n GetMostRecentWorkoutFn,\n GetPreferredUnitFn,\n GetPreferredUnitsFn,\n GetWorkoutRoutesFn,\n HKCategorySample,\n HKCorrelation,\n HKQuantitySample,\n HKWorkout,\n QueryCategorySamplesFn,\n QueryCorrelationSamplesFn,\n QueryQuantitySamplesFn,\n QueryStatisticsForQuantityFn,\n QueryWorkoutsFn,\n ReactNativeHealthkit,\n SaveCorrelationSampleFn,\n SaveQuantitySampleFn,\n SaveWorkoutSampleFn,\n SubscribeToChangesFn,\n} from './types'\n\nconst getPreferredUnit: GetPreferredUnitFn = async (type) => {\n const [unit] = await getPreferredUnits([type])\n return unit\n}\n\nconst ensureUnit = async <TUnit extends HKUnit>(\n type: HKQuantityTypeIdentifier,\n providedUnit?: TUnit,\n) => {\n if (providedUnit) {\n return providedUnit\n }\n const unit = await Native.getPreferredUnits([type])\n return unit[type] as TUnit\n}\n\nfunction deserializeSample<\n TIdentifier extends HKQuantityTypeIdentifier,\n TUnit extends HKUnit\n>(\n sample: HKQuantitySampleRaw<TIdentifier, TUnit>,\n): HKQuantitySample<TIdentifier, TUnit> {\n return {\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n }\n}\n\nfunction deserializeWorkout<TEnergy extends HKUnit, TDistance extends HKUnit>(\n sample: HKWorkoutRaw<TEnergy, TDistance>,\n): HKWorkout<TEnergy, TDistance> {\n return {\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n }\n}\n\nconst deserializCategorySample = <T extends HKCategoryTypeIdentifier>(\n sample: HKCategorySampleRaw<T>,\n): HKCategorySample<T> => ({\n ...sample,\n startDate: new Date(sample.startDate),\n endDate: new Date(sample.endDate),\n})\n\nconst serializeDate = (date?: Date | null): string => (date ? date.toISOString() : new Date(0).toISOString())\n\nconst prepareOptions = (options: GenericQueryOptions) => {\n const limit = !options.limit || options.limit === Infinity ? 0 : options.limit\n const ascending = options.ascending ?? limit === 0\n const from = serializeDate(options.from)\n const to = serializeDate(options.to)\n return {\n limit, ascending, from, to,\n }\n}\n\nconst queryQuantitySamples: QueryQuantitySamplesFn = async (\n identifier,\n options,\n) => {\n const unit = await ensureUnit(identifier, options.unit)\n const opts = prepareOptions(options)\n\n const quantitySamples = await Native.queryQuantitySamples(\n identifier,\n unit,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending,\n )\n\n return quantitySamples.map(deserializeSample)\n}\n\nasync function getPreferredUnitsTyped<\n TEnergy extends HKUnit,\n TDistance extends HKUnit\n>(options?: { readonly energyUnit?: TEnergy; readonly distanceUnit?: TDistance }) {\n let energyUnit = options?.energyUnit\n let distanceUnit = options?.distanceUnit\n if (!energyUnit || !distanceUnit) {\n const units = await Native.getPreferredUnits([\n HKQuantityTypeIdentifier.distanceWalkingRunning,\n HKQuantityTypeIdentifier.activeEnergyBurned,\n ])\n if (!energyUnit) {\n energyUnit = units[HKQuantityTypeIdentifier.distanceWalkingRunning] as\n | TEnergy\n | undefined\n }\n if (!distanceUnit) {\n distanceUnit = units[HKQuantityTypeIdentifier.activeEnergyBurned] as\n | TDistance\n | undefined\n }\n }\n if (!energyUnit) {\n energyUnit = HKUnit.Kilocalories as TEnergy\n }\n if (!distanceUnit) {\n distanceUnit = HKUnit.Meters as TDistance\n }\n return { energyUnit, distanceUnit }\n}\n\nconst subscribeToChanges: SubscribeToChangesFn = async (\n identifier,\n callback,\n) => {\n const subscription = EventEmitter.addListener(\n 'onChange',\n ({ typeIdentifier }) => {\n if (typeIdentifier === identifier) {\n callback()\n }\n },\n )\n\n const queryId = await Native.subscribeToObserverQuery(identifier).catch(\n async (error) => {\n subscription.remove()\n return Promise.reject(error)\n },\n )\n\n return async () => {\n subscription.remove()\n return Native.unsubscribeQuery(queryId)\n }\n}\n\nconst getMostRecentQuantitySample: GetMostRecentQuantitySampleFn = async (\n identifier,\n unit,\n) => {\n const samples = await queryQuantitySamples(identifier, {\n limit: 1,\n unit,\n })\n return samples[0]\n}\n\nfunction useMostRecentWorkout<\n TEnergy extends HKUnit,\n TDistance extends HKUnit\n>(options?: { readonly energyUnit?: TEnergy; readonly distanceUnit?: TDistance }) {\n const [workout, setWorkout] = useState<HKWorkout<TEnergy, TDistance> | null>(\n null,\n )\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n const { energyUnit, distanceUnit } = await getPreferredUnitsTyped(\n options,\n )\n\n cancelSubscription = await subscribeToChanges(\n 'HKWorkoutTypeIdentifier',\n async () => {\n const w = await getMostRecentWorkout({ energyUnit, distanceUnit })\n setWorkout(w)\n },\n )\n }\n void init()\n return () => {\n void cancelSubscription?.()\n }\n }, [options])\n return workout\n}\n\nconst getMostRecentCategorySample: GetMostRecentCategorySampleFn = async (\n identifier,\n) => {\n const samples = await queryCategorySamples(identifier, {\n limit: 1,\n ascending: false,\n })\n\n return samples[0]\n}\n\nfunction useSubscribeToChanges<TIdentifier extends SampleTypeIdentifier>(\n identifier: TIdentifier,\n onChange: () => void,\n): void {\n useEffect(() => {\n let cancelSubscription: (() => Promise<boolean>) | undefined\n\n const init = async () => {\n cancelSubscription = await subscribeToChanges(identifier, onChange)\n }\n void init()\n\n return () => {\n void cancelSubscription?.()\n }\n }, [identifier, onChange])\n}\n\nuseSubscribeToChanges(HKCategoryTypeIdentifier.appleStandHour, () => {})\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\nfunction useMostRecentQuantitySample<\n TIdentifier extends HKQuantityTypeIdentifier,\n TUnit extends HKUnit = HKUnit\n>(identifier: TIdentifier, unit?: TUnit) {\n const [lastSample, setLastSample] = useState<HKQuantitySample<\n TIdentifier,\n TUnit\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 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\nconst saveQuantitySample: SaveQuantitySampleFn = async (\n identifier,\n unit,\n value,\n options,\n) => {\n const start = options?.start || options?.end || new Date()\n const end = options?.end || options?.start || new Date()\n const metadata = options?.metadata || {}\n\n return Native.saveQuantitySample(\n identifier,\n unit,\n value,\n start.toISOString(),\n end.toISOString(),\n metadata,\n )\n}\n\nconst queryStatisticsForQuantity: QueryStatisticsForQuantityFn = async (\n identifier,\n options,\n from,\n to,\n unit,\n) => {\n const actualUnit = await ensureUnit(identifier, unit)\n const toDate = to || new Date()\n const { mostRecentQuantityDateInterval, ...rawResponse } = await Native.queryStatisticsForQuantity(\n identifier,\n actualUnit,\n from.toISOString(),\n toDate.toISOString(),\n options,\n )\n\n const response = {\n ...rawResponse,\n ...(mostRecentQuantityDateInterval\n ? {\n mostRecentQuantityDateInterval: {\n from: new Date(mostRecentQuantityDateInterval.from),\n to: new Date(mostRecentQuantityDateInterval.to),\n },\n }\n : {}),\n }\n\n return response\n}\n\nconst requestAuthorization = async (\n read: readonly HealthkitReadAuthorization[],\n write: readonly HealthkitWriteAuthorization[] = [],\n): Promise<boolean> => {\n const readPermissions = read.reduce((obj, cur) => ({ ...obj, [cur]: true }), {} as ReadPermissions)\n\n const writePermissions = write.reduce((obj, cur) => ({ ...obj, [cur]: true }), {} as WritePermissions)\n\n return Native.requestAuthorization(writePermissions, readPermissions)\n}\n\nconst getDateOfBirth = async () => {\n const dateOfBirth = await Native.getDateOfBirth()\n return new Date(dateOfBirth)\n}\n\nconst getRequestStatusForAuthorization = async (\n read: readonly HealthkitReadAuthorization[],\n write: readonly HealthkitWriteAuthorization[] = [],\n) => {\n const readPermissions = read.reduce((obj, cur) => ({ ...obj, [cur]: true }), {} as ReadPermissions)\n\n const writePermissions = write.reduce((obj, cur) => ({ ...obj, [cur]: true }), {} as WritePermissions)\n\n return Native.getRequestStatusForAuthorization(\n writePermissions,\n readPermissions,\n )\n}\n\nconst queryCategorySamples: QueryCategorySamplesFn = async (\n identifier,\n options,\n) => {\n const opts = prepareOptions(options)\n const results = await Native.queryCategorySamples(\n identifier,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending,\n )\n\n return results.map(deserializCategorySample)\n}\n\nconst queryWorkouts: QueryWorkoutsFn = async (options) => {\n const { energyUnit, distanceUnit } = await getPreferredUnitsTyped(options)\n const opts = prepareOptions(options)\n\n const workouts = await Native.queryWorkoutSamples(\n energyUnit,\n distanceUnit,\n opts.from,\n opts.to,\n opts.limit,\n opts.ascending,\n )\n\n return workouts.map(deserializeWorkout)\n}\n\nconst getMostRecentWorkout: GetMostRecentWorkoutFn = async (options) => {\n const workouts = await queryWorkouts({\n limit: 1,\n ascending: false,\n energyUnit: options?.energyUnit,\n distanceUnit: options?.distanceUnit,\n })\n\n return workouts[0]\n}\n\nasync function saveCategorySample<T extends HKCategoryTypeIdentifier>(\n identifier: T,\n value: HKCategoryValueForIdentifier<T>,\n options?: {\n readonly start?: Date;\n readonly end?: Date;\n readonly metadata?: MetadataMapperForCategoryIdentifier<T>;\n },\n) {\n const start = options?.start || options?.end || new Date()\n const end = options?.end || options?.start || new Date()\n const metadata = options?.metadata || {}\n\n return Native.saveCategorySample(\n identifier,\n value,\n start.toISOString(),\n end.toISOString(),\n metadata || {},\n )\n}\n\nconst getPreferredUnits: GetPreferredUnitsFn = async (identifiers) => {\n const units = await Native.getPreferredUnits(identifiers)\n return identifiers.map((i) => units[i])\n}\n\nconst buildUnitWithPrefix = (prefix: HKUnitSIPrefix, unit: HKUnitSI) => `${prefix}${unit}` as HKUnit\n\nfunction deserializeCorrelation<\n TIdentifier extends HKCorrelationTypeIdentifier\n>(s: HKCorrelationRaw<TIdentifier>): HKCorrelation<TIdentifier> {\n return {\n ...s,\n objects: s.objects.map((o) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (o.quantity !== undefined) {\n return deserializeSample(o as HKQuantitySampleRaw)\n }\n\n return deserializCategorySample(o as HKCategorySampleRaw)\n }),\n endDate: new Date(s.endDate),\n startDate: new Date(s.startDate),\n }\n}\n\nfunction ensureMetadata<TMetadata>(metadata?: TMetadata) {\n return metadata || ({} as TMetadata)\n}\n\nconst queryCorrelationSamples: QueryCorrelationSamplesFn = async (\n typeIdentifier,\n options,\n) => {\n const opts = prepareOptions(options)\n const correlations = await Native.queryCorrelationSamples(\n typeIdentifier,\n opts.from,\n opts.to,\n )\n\n return correlations.map(deserializeCorrelation)\n}\n\nconst saveCorrelationSample: SaveCorrelationSampleFn = async (\n typeIdentifier,\n samples,\n options,\n) => {\n const start = (options?.start || new Date()).toISOString()\n const end = (options?.end || new Date()).toISOString()\n\n return Native.saveCorrelationSample(\n typeIdentifier,\n samples,\n start,\n end,\n ensureMetadata(options?.metadata),\n )\n}\n\nconst saveWorkoutSample: SaveWorkoutSampleFn = async (\n typeIdentifier,\n quantities,\n _start,\n options,\n) => {\n const start = _start.toISOString()\n const end = (options?.end || new Date()).toISOString()\n\n return Native.saveWorkoutSample(\n typeIdentifier,\n quantities,\n start,\n end,\n ensureMetadata(options?.metadata),\n )\n}\n\nconst getWorkoutRoutes: GetWorkoutRoutesFn = async (workoutUUID: string) => Native.getWorkoutRoutes(workoutUUID)\n\nconst Healthkit: ReactNativeHealthkit = {\n authorizationStatusFor: Native.authorizationStatusFor.bind(Native),\n\n isHealthDataAvailable: Native.isHealthDataAvailable.bind(Native),\n\n buildUnitWithPrefix,\n\n disableAllBackgroundDelivery: Native.disableAllBackgroundDelivery,\n disableBackgroundDelivery: Native.disableBackgroundDelivery,\n enableBackgroundDelivery: Native.enableBackgroundDelivery,\n\n // simple convenience getters\n getBiologicalSex: Native.getBiologicalSex.bind(Native),\n getFitzpatrickSkinType: Native.getFitzpatrickSkinType.bind(Native),\n getWheelchairUse: Native.getWheelchairUse,\n getBloodType: Native.getBloodType.bind(Native),\n getDateOfBirth,\n\n getMostRecentQuantitySample,\n getMostRecentCategorySample,\n getMostRecentWorkout,\n\n getPreferredUnit,\n getPreferredUnits,\n getRequestStatusForAuthorization,\n\n getWorkoutRoutes,\n\n // query methods\n queryCategorySamples,\n queryCorrelationSamples,\n queryQuantitySamples,\n queryStatisticsForQuantity,\n queryWorkouts,\n\n requestAuthorization,\n\n // save methods\n saveCategorySample,\n saveCorrelationSample,\n saveQuantitySample,\n saveWorkoutSample,\n\n // subscriptions\n subscribeToChanges,\n\n // hooks\n useMostRecentCategorySample,\n\n useMostRecentQuantitySample,\n useMostRecentWorkout,\n\n useSubscribeToChanges,\n\n useIsHealthDataAvailable: () => {\n const [isAvailable, setIsAvailable] = useState<boolean | null>(null)\n useEffect(() => {\n const init = async () => {\n const res = await Native.isHealthDataAvailable()\n setIsAvailable(res)\n }\n void init()\n }, [])\n return isAvailable\n },\n useHealthkitAuthorization: (read, write) => {\n const [status, setStatus] = useState<HKAuthorizationRequestStatus | null>(null)\n const refreshAuthStatus = useCallback(async () => {\n const auth = await getRequestStatusForAuthorization(read, write)\n setStatus(auth)\n return auth\n }, [])\n\n const request = useCallback(async () => {\n await requestAuthorization(read, write)\n return refreshAuthStatus()\n }, [])\n\n useEffect(() => {\n void refreshAuthStatus()\n }, [])\n\n return [status, request]\n },\n}\n\nexport * from './native-types'\nexport * from './types'\n\nexport default Healthkit\n"],"mappings":"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"}
|
package/lib/module/index.js
CHANGED
|
@@ -1,44 +1,58 @@
|
|
|
1
1
|
import { Platform } from 'react-native';
|
|
2
|
-
|
|
2
|
+
import { HKAuthorizationRequestStatus, HKBiologicalSex, HKBloodType, HKFitzpatrickSkinType, HKUnit, HKWheelchairUse } from './native-types';
|
|
3
|
+
const notAvailableError = `[@kingstinct/react-native-healthkit] Platform "${Platform.OS}" not supported`;
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
function UnavailableFn(retVal) {
|
|
6
|
+
return () => {
|
|
7
|
+
console.warn(notAvailableError);
|
|
8
|
+
return retVal;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
const Healthkit = {
|
|
9
|
-
authorizationStatusFor: UnavailableFn,
|
|
10
|
-
buildUnitWithPrefix: UnavailableFn,
|
|
11
|
-
disableAllBackgroundDelivery: UnavailableFn,
|
|
12
|
-
disableBackgroundDelivery: UnavailableFn,
|
|
13
|
-
enableBackgroundDelivery: UnavailableFn,
|
|
14
|
-
getBiologicalSex: UnavailableFn,
|
|
15
|
-
getBloodType: UnavailableFn,
|
|
16
|
-
getDateOfBirth: UnavailableFn,
|
|
17
|
-
getFitzpatrickSkinType: UnavailableFn,
|
|
18
|
-
getMostRecentCategorySample: UnavailableFn,
|
|
19
|
-
getMostRecentQuantitySample: UnavailableFn,
|
|
20
|
-
getMostRecentWorkout: UnavailableFn,
|
|
21
|
-
getPreferredUnit: UnavailableFn,
|
|
22
|
-
getPreferredUnits: UnavailableFn,
|
|
23
|
-
getRequestStatusForAuthorization: UnavailableFn,
|
|
24
|
-
getWheelchairUse: UnavailableFn,
|
|
25
|
-
getWorkoutRoutes: UnavailableFn,
|
|
26
|
-
isHealthDataAvailable: () => Promise.resolve(false),
|
|
27
|
-
queryCategorySamples: UnavailableFn,
|
|
28
|
-
queryCorrelationSamples: UnavailableFn,
|
|
29
|
-
queryQuantitySamples: UnavailableFn,
|
|
30
|
-
queryStatisticsForQuantity: UnavailableFn
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
13
|
+
authorizationStatusFor: UnavailableFn(Promise.resolve(false)),
|
|
14
|
+
buildUnitWithPrefix: UnavailableFn(HKUnit.Atmospheres),
|
|
15
|
+
disableAllBackgroundDelivery: UnavailableFn(Promise.resolve(false)),
|
|
16
|
+
disableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),
|
|
17
|
+
enableBackgroundDelivery: UnavailableFn(Promise.resolve(false)),
|
|
18
|
+
getBiologicalSex: UnavailableFn(Promise.resolve(HKBiologicalSex.notSet)),
|
|
19
|
+
getBloodType: UnavailableFn(Promise.resolve(HKBloodType.notSet)),
|
|
20
|
+
getDateOfBirth: UnavailableFn(Promise.resolve(new Date(0))),
|
|
21
|
+
getFitzpatrickSkinType: UnavailableFn(Promise.resolve(HKFitzpatrickSkinType.notSet)),
|
|
22
|
+
getMostRecentCategorySample: UnavailableFn(Promise.resolve(null)),
|
|
23
|
+
getMostRecentQuantitySample: UnavailableFn(Promise.resolve(null)),
|
|
24
|
+
getMostRecentWorkout: UnavailableFn(Promise.resolve(null)),
|
|
25
|
+
getPreferredUnit: UnavailableFn(Promise.resolve(HKUnit.Atmospheres)),
|
|
26
|
+
getPreferredUnits: UnavailableFn(Promise.resolve([])),
|
|
27
|
+
getRequestStatusForAuthorization: UnavailableFn(Promise.resolve(HKAuthorizationRequestStatus.unknown)),
|
|
28
|
+
getWheelchairUse: UnavailableFn(Promise.resolve(HKWheelchairUse.notSet)),
|
|
29
|
+
getWorkoutRoutes: UnavailableFn(Promise.resolve([])),
|
|
30
|
+
isHealthDataAvailable: async () => Promise.resolve(false),
|
|
31
|
+
queryCategorySamples: UnavailableFn(Promise.resolve([])),
|
|
32
|
+
queryCorrelationSamples: UnavailableFn(Promise.resolve([])),
|
|
33
|
+
queryQuantitySamples: UnavailableFn(Promise.resolve([])),
|
|
34
|
+
queryStatisticsForQuantity: UnavailableFn(Promise.resolve({
|
|
35
|
+
averageQuantity: undefined,
|
|
36
|
+
maximumQuantity: undefined,
|
|
37
|
+
minimumQuantity: undefined,
|
|
38
|
+
sumQuantity: undefined,
|
|
39
|
+
mostRecentQuantity: undefined,
|
|
40
|
+
mostRecentQuantityDateInterval: undefined,
|
|
41
|
+
duration: undefined
|
|
42
|
+
})),
|
|
43
|
+
queryWorkouts: UnavailableFn(Promise.resolve([])),
|
|
44
|
+
requestAuthorization: UnavailableFn(Promise.resolve(false)),
|
|
45
|
+
saveCategorySample: UnavailableFn(Promise.resolve(false)),
|
|
46
|
+
saveCorrelationSample: UnavailableFn(Promise.resolve(false)),
|
|
47
|
+
saveQuantitySample: UnavailableFn(Promise.resolve(false)),
|
|
48
|
+
saveWorkoutSample: UnavailableFn(Promise.resolve(false)),
|
|
49
|
+
subscribeToChanges: UnavailableFn(Promise.resolve(async () => Promise.resolve(false))),
|
|
50
|
+
useMostRecentCategorySample: UnavailableFn(null),
|
|
51
|
+
useMostRecentQuantitySample: UnavailableFn(null),
|
|
52
|
+
useMostRecentWorkout: UnavailableFn(null),
|
|
53
|
+
useSubscribeToChanges: UnavailableFn([null, () => null]),
|
|
54
|
+
useHealthkitAuthorization: UnavailableFn([null, async () => Promise.resolve(null)]),
|
|
55
|
+
useIsHealthDataAvailable: UnavailableFn(false)
|
|
42
56
|
};
|
|
43
57
|
export * from './native-types';
|
|
44
58
|
export * from './types';
|