@gromozeqa/react-native-apple-health-kit 0.4.0 → 0.5.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 +105 -15
- package/android/generated/java/com/gromozeqa/reactnativeapplehealthkit/NativeReactNativeAppleHealthKitSpec.java +4 -0
- package/android/generated/jni/RNReactNativeAppleHealthKitSpec-generated.cpp +6 -0
- package/android/generated/jni/react/renderer/components/RNReactNativeAppleHealthKitSpec/RNReactNativeAppleHealthKitSpecJSI-generated.cpp +6 -0
- package/android/generated/jni/react/renderer/components/RNReactNativeAppleHealthKitSpec/RNReactNativeAppleHealthKitSpecJSI.h +9 -0
- package/ios/HealthKitManager.swift +46 -42
- package/ios/HealthKitPermissions.swift +9 -0
- package/ios/ReactNativeAppleHealthKit.mm +17 -12
- package/ios/generated/RNReactNativeAppleHealthKitSpec/RNReactNativeAppleHealthKitSpec-generated.mm +7 -0
- package/ios/generated/RNReactNativeAppleHealthKitSpec/RNReactNativeAppleHealthKitSpec.h +2 -0
- package/ios/generated/RNReactNativeAppleHealthKitSpecJSI-generated.cpp +6 -0
- package/ios/generated/RNReactNativeAppleHealthKitSpecJSI.h +9 -0
- package/lib/commonjs/NativeReactNativeAppleHealthKit.js +3 -0
- package/lib/commonjs/NativeReactNativeAppleHealthKit.js.map +1 -1
- package/lib/commonjs/index.js +4 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeReactNativeAppleHealthKit.js +3 -0
- package/lib/module/NativeReactNativeAppleHealthKit.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/commonjs/src/NativeReactNativeAppleHealthKit.d.ts +1 -0
- package/lib/typescript/commonjs/src/NativeReactNativeAppleHealthKit.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/NativeReactNativeAppleHealthKit.d.ts +1 -0
- package/lib/typescript/module/src/NativeReactNativeAppleHealthKit.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +1 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeReactNativeAppleHealthKit.ts +4 -0
- package/src/index.tsx +4 -0
package/README.md
CHANGED
@@ -1,33 +1,123 @@
|
|
1
|
-
#
|
1
|
+
# 📅 React Native Apple HealthKit
|
2
2
|
|
3
|
-
|
3
|
+
🔹 **React Native Apple HealthKit** A React Native package to interact with Apple HealthKit for iOS.
|
4
|
+
This package allows access to health & fitness data exposed by Apple Healthkit.
|
4
5
|
|
5
|
-
|
6
|
+
---
|
7
|
+
|
8
|
+
## 🚀 Features
|
9
|
+
|
10
|
+
- **📆 Check Availability**: Check whether HealthKit is available on current device.
|
11
|
+
- **🔒 Secure Access**: Requires user permission for accessing HealthKit data.
|
12
|
+
- **📸 Snapshot for N days**: Returns a snapshot for past N days of user's: steps count & heart rate;
|
13
|
+
|
14
|
+
---
|
6
15
|
|
7
|
-
|
16
|
+
## 🛠️ Prerequisites
|
17
|
+
|
18
|
+
Before getting started, ensure you have:
|
19
|
+
|
20
|
+
- React Native version `0.75+`
|
21
|
+
- **iOS 13++** (Native API support)
|
22
|
+
- new architecture support
|
23
|
+
|
24
|
+
---
|
25
|
+
|
26
|
+
## 📦 Installation
|
27
|
+
|
28
|
+
Run the following command to install the package:
|
29
|
+
|
30
|
+
```bash
|
8
31
|
npm install @gromozeqa/react-native-apple-health-kit
|
32
|
+
|
33
|
+
yarn add @gromozeqa/react-native-apple-health-kit
|
34
|
+
|
35
|
+
cd ios && pod install
|
9
36
|
```
|
10
37
|
|
11
|
-
|
38
|
+
Edit **`Info.plist`**. Add the following item (Set **Value** as desired):
|
12
39
|
|
40
|
+
| Key | Type | Value |
|
41
|
+
| --------------------------------------- | -------- | ---------------------------------------------------------------------------------- |
|
42
|
+
| _Privacy - NSHealthShareUsageDescription_ | `String` | _CHANGEME: This app requires read access to your Health data._ |
|
13
43
|
|
14
|
-
```js
|
15
|
-
import { multiply } from '@gromozeqa/react-native-apple-health-kit';
|
16
44
|
|
17
|
-
|
45
|
+
### To add Healthkit support to your application's Capabilities ###
|
18
46
|
|
19
|
-
|
20
|
-
|
47
|
+
Open the ios/ folder of your project in Xcode
|
48
|
+
Select the project name in the left sidebar
|
49
|
+
In the main view select '+ Capability' and double click 'HealthKit'
|
21
50
|
|
51
|
+
📌 Example Usage
|
22
52
|
|
23
|
-
|
53
|
+
✅ Request Permissions
|
24
54
|
|
25
|
-
|
55
|
+
To check the current status of calendar permissions, use:
|
26
56
|
|
27
|
-
|
57
|
+
```ts
|
58
|
+
import { requestHealthKitPermissions } from '@gromozeqa/react-native-apple-health-kit';
|
59
|
+
|
60
|
+
const requestPermissions = async () => {
|
61
|
+
const status = await requestHealthKitPermissions();
|
62
|
+
console.log(status);
|
63
|
+
};
|
64
|
+
```
|
28
65
|
|
29
|
-
|
66
|
+
### 📆 Methods
|
67
|
+
|
68
|
+
Below are the methods available in **React Native Apple HealthKit**
|
30
69
|
|
31
70
|
---
|
32
71
|
|
33
|
-
|
72
|
+
### Get steps count for past N days
|
73
|
+
|
74
|
+
|
75
|
+
📌 **Get steps count for past N days**
|
76
|
+
|
77
|
+
```ts
|
78
|
+
import { getSteps } from '@gromozeqa/react-native-apple-health-kit';
|
79
|
+
|
80
|
+
const getStepsCount = async () => {
|
81
|
+
try {
|
82
|
+
const steps = await getSteps(30);
|
83
|
+
console.log(steps);
|
84
|
+
} catch (error) {
|
85
|
+
console.log(error);
|
86
|
+
}
|
87
|
+
};
|
88
|
+
```
|
89
|
+
|
90
|
+
📌 **Get heart rate for past N days**
|
91
|
+
|
92
|
+
```ts
|
93
|
+
import { getHeartRate } from '@gromozeqa/react-native-apple-health-kit';
|
94
|
+
|
95
|
+
const getUsersHeartRate = async () => {
|
96
|
+
try {
|
97
|
+
const steps = await getHeartRate(30);
|
98
|
+
console.log(steps);
|
99
|
+
} catch (error) {
|
100
|
+
console.log(error);
|
101
|
+
}
|
102
|
+
};
|
103
|
+
```
|
104
|
+
|
105
|
+
📌 **Get user's body measurement**
|
106
|
+
|
107
|
+
```ts
|
108
|
+
import { getMeasurement } from '@gromozeqa/react-native-apple-health-kit';
|
109
|
+
|
110
|
+
const getUserMeasurement = async () => {
|
111
|
+
try {
|
112
|
+
const steps = await getMeasurement();
|
113
|
+
console.log(steps);
|
114
|
+
} catch (error) {
|
115
|
+
console.log(error);
|
116
|
+
}
|
117
|
+
};
|
118
|
+
```
|
119
|
+
|
120
|
+
### ⚠️Permissions ###
|
121
|
+
Due to Apple's privacy model, if a user has previously denied a specific permission they will not be prompted again for that permission. The user will need to go into the Apple Health app and grant the permission to your app.
|
122
|
+
|
123
|
+
If read permissions are not granted for the requested data, the method will return an empty array.
|
@@ -47,4 +47,8 @@ public abstract class NativeReactNativeAppleHealthKitSpec extends ReactContextBa
|
|
47
47
|
@ReactMethod
|
48
48
|
@DoNotStrip
|
49
49
|
public abstract void getMeasurement(Promise promise);
|
50
|
+
|
51
|
+
@ReactMethod
|
52
|
+
@DoNotStrip
|
53
|
+
public abstract void checkAvailability(Promise promise);
|
50
54
|
}
|
@@ -32,12 +32,18 @@ static facebook::jsi::Value __hostFunction_NativeReactNativeAppleHealthKitSpecJS
|
|
32
32
|
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "getMeasurement", "(Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
33
33
|
}
|
34
34
|
|
35
|
+
static facebook::jsi::Value __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_checkAvailability(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
36
|
+
static jmethodID cachedMethodId = nullptr;
|
37
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "checkAvailability", "(Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
38
|
+
}
|
39
|
+
|
35
40
|
NativeReactNativeAppleHealthKitSpecJSI::NativeReactNativeAppleHealthKitSpecJSI(const JavaTurboModule::InitParams ¶ms)
|
36
41
|
: JavaTurboModule(params) {
|
37
42
|
methodMap_["requestHealthKitPermissions"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_requestHealthKitPermissions};
|
38
43
|
methodMap_["getSteps"] = MethodMetadata {1, __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_getSteps};
|
39
44
|
methodMap_["getHeartRate"] = MethodMetadata {1, __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_getHeartRate};
|
40
45
|
methodMap_["getMeasurement"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_getMeasurement};
|
46
|
+
methodMap_["checkAvailability"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_checkAvailability};
|
41
47
|
}
|
42
48
|
|
43
49
|
std::shared_ptr<TurboModule> RNReactNativeAppleHealthKitSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) {
|
@@ -33,6 +33,11 @@ static jsi::Value __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_getMe
|
|
33
33
|
rt
|
34
34
|
);
|
35
35
|
}
|
36
|
+
static jsi::Value __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_checkAvailability(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
37
|
+
return static_cast<NativeReactNativeAppleHealthKitCxxSpecJSI *>(&turboModule)->checkAvailability(
|
38
|
+
rt
|
39
|
+
);
|
40
|
+
}
|
36
41
|
|
37
42
|
NativeReactNativeAppleHealthKitCxxSpecJSI::NativeReactNativeAppleHealthKitCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
38
43
|
: TurboModule("ReactNativeAppleHealthKit", jsInvoker) {
|
@@ -40,6 +45,7 @@ NativeReactNativeAppleHealthKitCxxSpecJSI::NativeReactNativeAppleHealthKitCxxSpe
|
|
40
45
|
methodMap_["getSteps"] = MethodMetadata {1, __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_getSteps};
|
41
46
|
methodMap_["getHeartRate"] = MethodMetadata {1, __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_getHeartRate};
|
42
47
|
methodMap_["getMeasurement"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_getMeasurement};
|
48
|
+
methodMap_["checkAvailability"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_checkAvailability};
|
43
49
|
}
|
44
50
|
|
45
51
|
|
@@ -229,6 +229,7 @@ public:
|
|
229
229
|
virtual jsi::Value getSteps(jsi::Runtime &rt, double daysBefore) = 0;
|
230
230
|
virtual jsi::Value getHeartRate(jsi::Runtime &rt, double daysBefore) = 0;
|
231
231
|
virtual jsi::Value getMeasurement(jsi::Runtime &rt) = 0;
|
232
|
+
virtual jsi::Value checkAvailability(jsi::Runtime &rt) = 0;
|
232
233
|
|
233
234
|
};
|
234
235
|
|
@@ -287,6 +288,14 @@ private:
|
|
287
288
|
return bridging::callFromJs<jsi::Value>(
|
288
289
|
rt, &T::getMeasurement, jsInvoker_, instance_);
|
289
290
|
}
|
291
|
+
jsi::Value checkAvailability(jsi::Runtime &rt) override {
|
292
|
+
static_assert(
|
293
|
+
bridging::getParameterCount(&T::checkAvailability) == 1,
|
294
|
+
"Expected checkAvailability(...) to have 1 parameters");
|
295
|
+
|
296
|
+
return bridging::callFromJs<jsi::Value>(
|
297
|
+
rt, &T::checkAvailability, jsInvoker_, instance_);
|
298
|
+
}
|
290
299
|
|
291
300
|
private:
|
292
301
|
friend class NativeReactNativeAppleHealthKitCxxSpec;
|
@@ -10,46 +10,50 @@ import HealthKit
|
|
10
10
|
|
11
11
|
@objc public class HealthKitManager: NSObject {
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
13
|
+
private let healthStore = HKHealthStore()
|
14
|
+
private let permissions = HealthKitPermissions()
|
15
|
+
private let queries = HealthKitQueries()
|
16
|
+
|
17
|
+
@objc public func requestHealthKitPermissions(completion: @escaping (Bool, Error?) -> Void) {
|
18
|
+
permissions.requestPermissions(completion: completion)
|
19
|
+
}
|
20
|
+
|
21
|
+
@objc public func getSteps(daysBefore: NSNumber, completion: @escaping (NSArray?, Error?) -> Void) {
|
22
|
+
queries.getStepsQuery(daysBefore: daysBefore.intValue) { result, error in
|
23
|
+
if let error = error {
|
24
|
+
completion(nil, error)
|
25
|
+
return
|
26
|
+
}
|
27
|
+
|
28
|
+
guard let stepsData = result else {
|
29
|
+
completion(nil, NSError(domain: "HealthKit", code: -2, userInfo: [NSLocalizedDescriptionKey: "Invalid steps data"]))
|
30
|
+
return
|
31
|
+
}
|
32
|
+
completion(stepsData as NSArray, nil)
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
@objc public func getHeartRate(daysBefore: NSNumber, completion: @escaping (NSArray?, Error?) -> Void) {
|
37
|
+
queries.getHeartRateQuery(daysBefore: daysBefore.intValue) { result, error in
|
38
|
+
if let error = error {
|
39
|
+
completion(nil, error)
|
40
|
+
return
|
41
|
+
}
|
42
|
+
|
43
|
+
guard let heartRateData = result else {
|
44
|
+
completion(nil, NSError(domain: "HealthKit", code: -2, userInfo: [NSLocalizedDescriptionKey: "Invalid heart rate data"]))
|
45
|
+
return
|
46
|
+
}
|
47
|
+
completion(heartRateData as NSArray, nil)
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
|
52
|
+
@objc public func getMeasurements(completion: @escaping ([String: AnyObject]?) -> Void) {
|
53
|
+
queries.getMeasurementsQuery(completion: completion)
|
54
|
+
}
|
55
|
+
|
56
|
+
@objc public func checkAvailability(completion: @escaping (Bool) -> Void) {
|
57
|
+
permissions.checkAvailability(completion: completion)
|
58
|
+
}
|
55
59
|
}
|
@@ -30,4 +30,13 @@ class HealthKitPermissions {
|
|
30
30
|
|
31
31
|
healthStore.requestAuthorization(toShare: [], read: allTypes, completion: completion)
|
32
32
|
}
|
33
|
+
|
34
|
+
func checkAvailability(completion: @escaping (Bool) -> Void) {
|
35
|
+
if HKHealthStore.isHealthDataAvailable() {
|
36
|
+
completion(true)
|
37
|
+
} else {
|
38
|
+
let error = NSError(domain: "HealthKit", code: -1, userInfo: [NSLocalizedDescriptionKey: "HealthKit is not available on this device."])
|
39
|
+
completion(false)
|
40
|
+
}
|
41
|
+
}
|
33
42
|
}
|
@@ -41,21 +41,26 @@ RCT_EXPORT_METHOD(getSteps:(double)daysBefore resolve:(RCTPromiseResolveBlock)re
|
|
41
41
|
}];
|
42
42
|
}
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
}];
|
44
|
+
RCT_EXPORT_METHOD(getHeartRate:(double)daysBefore resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
|
45
|
+
[moduleImpl getHeartRateWithDaysBefore:@(daysBefore) completion:^(NSArray * _Nullable steps, NSError * _Nullable error) {
|
46
|
+
if (error) {
|
47
|
+
reject(@"heart_rate_error", error.localizedDescription, error);
|
48
|
+
} else {
|
49
|
+
resolve(steps);
|
50
|
+
}
|
51
|
+
}];
|
52
52
|
}
|
53
53
|
|
54
|
+
RCT_EXPORT_METHOD(getMeasurement:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
|
55
|
+
[moduleImpl getMeasurementsWithCompletion:^(NSDictionary<NSString *, id> * _Nullable data) {
|
56
|
+
resolve(data);
|
57
|
+
}];
|
58
|
+
}
|
54
59
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
60
|
+
RCT_EXPORT_METHOD(checkAvailability:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
|
61
|
+
[moduleImpl checkAvailabilityWithCompletion:^(BOOL result) {
|
62
|
+
resolve(@(result));
|
63
|
+
}];
|
59
64
|
}
|
60
65
|
|
61
66
|
@end
|
package/ios/generated/RNReactNativeAppleHealthKitSpec/RNReactNativeAppleHealthKitSpec-generated.mm
CHANGED
@@ -32,6 +32,10 @@ namespace facebook::react {
|
|
32
32
|
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "getMeasurement", @selector(getMeasurement:reject:), args, count);
|
33
33
|
}
|
34
34
|
|
35
|
+
static facebook::jsi::Value __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_checkAvailability(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
36
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "checkAvailability", @selector(checkAvailability:reject:), args, count);
|
37
|
+
}
|
38
|
+
|
35
39
|
NativeReactNativeAppleHealthKitSpecJSI::NativeReactNativeAppleHealthKitSpecJSI(const ObjCTurboModule::InitParams ¶ms)
|
36
40
|
: ObjCTurboModule(params) {
|
37
41
|
|
@@ -46,5 +50,8 @@ namespace facebook::react {
|
|
46
50
|
|
47
51
|
methodMap_["getMeasurement"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_getMeasurement};
|
48
52
|
|
53
|
+
|
54
|
+
methodMap_["checkAvailability"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitSpecJSI_checkAvailability};
|
55
|
+
|
49
56
|
}
|
50
57
|
} // namespace facebook::react
|
@@ -43,6 +43,8 @@
|
|
43
43
|
reject:(RCTPromiseRejectBlock)reject;
|
44
44
|
- (void)getMeasurement:(RCTPromiseResolveBlock)resolve
|
45
45
|
reject:(RCTPromiseRejectBlock)reject;
|
46
|
+
- (void)checkAvailability:(RCTPromiseResolveBlock)resolve
|
47
|
+
reject:(RCTPromiseRejectBlock)reject;
|
46
48
|
|
47
49
|
@end
|
48
50
|
namespace facebook::react {
|
@@ -33,6 +33,11 @@ static jsi::Value __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_getMe
|
|
33
33
|
rt
|
34
34
|
);
|
35
35
|
}
|
36
|
+
static jsi::Value __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_checkAvailability(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
37
|
+
return static_cast<NativeReactNativeAppleHealthKitCxxSpecJSI *>(&turboModule)->checkAvailability(
|
38
|
+
rt
|
39
|
+
);
|
40
|
+
}
|
36
41
|
|
37
42
|
NativeReactNativeAppleHealthKitCxxSpecJSI::NativeReactNativeAppleHealthKitCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
38
43
|
: TurboModule("ReactNativeAppleHealthKit", jsInvoker) {
|
@@ -40,6 +45,7 @@ NativeReactNativeAppleHealthKitCxxSpecJSI::NativeReactNativeAppleHealthKitCxxSpe
|
|
40
45
|
methodMap_["getSteps"] = MethodMetadata {1, __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_getSteps};
|
41
46
|
methodMap_["getHeartRate"] = MethodMetadata {1, __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_getHeartRate};
|
42
47
|
methodMap_["getMeasurement"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_getMeasurement};
|
48
|
+
methodMap_["checkAvailability"] = MethodMetadata {0, __hostFunction_NativeReactNativeAppleHealthKitCxxSpecJSI_checkAvailability};
|
43
49
|
}
|
44
50
|
|
45
51
|
|
@@ -229,6 +229,7 @@ public:
|
|
229
229
|
virtual jsi::Value getSteps(jsi::Runtime &rt, double daysBefore) = 0;
|
230
230
|
virtual jsi::Value getHeartRate(jsi::Runtime &rt, double daysBefore) = 0;
|
231
231
|
virtual jsi::Value getMeasurement(jsi::Runtime &rt) = 0;
|
232
|
+
virtual jsi::Value checkAvailability(jsi::Runtime &rt) = 0;
|
232
233
|
|
233
234
|
};
|
234
235
|
|
@@ -287,6 +288,14 @@ private:
|
|
287
288
|
return bridging::callFromJs<jsi::Value>(
|
288
289
|
rt, &T::getMeasurement, jsInvoker_, instance_);
|
289
290
|
}
|
291
|
+
jsi::Value checkAvailability(jsi::Runtime &rt) override {
|
292
|
+
static_assert(
|
293
|
+
bridging::getParameterCount(&T::checkAvailability) == 1,
|
294
|
+
"Expected checkAvailability(...) to have 1 parameters");
|
295
|
+
|
296
|
+
return bridging::callFromJs<jsi::Value>(
|
297
|
+
rt, &T::checkAvailability, jsInvoker_, instance_);
|
298
|
+
}
|
290
299
|
|
291
300
|
private:
|
292
301
|
friend class NativeReactNativeAppleHealthKitCxxSpec;
|
@@ -17,6 +17,9 @@ const NoOpSpec = {
|
|
17
17
|
},
|
18
18
|
getMeasurement() {
|
19
19
|
return Promise.reject(new Error('HealthKit is not available on Android.'));
|
20
|
+
},
|
21
|
+
checkAvailability() {
|
22
|
+
return Promise.reject(new Error('HealthKit is not available on Android.'));
|
20
23
|
}
|
21
24
|
};
|
22
25
|
var _default = exports.default = _reactNative.Platform.OS === 'android' ? NoOpSpec : _reactNative.TurboModuleRegistry.getEnforcing('ReactNativeAppleHealthKit');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_reactNative","require","NoOpSpec","requestHealthKitPermissions","Promise","reject","Error","getSteps","getHeartRate","getMeasurement","_default","exports","default","Platform","OS","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeReactNativeAppleHealthKit.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;
|
1
|
+
{"version":3,"names":["_reactNative","require","NoOpSpec","requestHealthKitPermissions","Promise","reject","Error","getSteps","getHeartRate","getMeasurement","checkAvailability","_default","exports","default","Platform","OS","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeReactNativeAppleHealthKit.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAgCA,MAAMC,QAAc,GAAG;EACrBC,2BAA2BA,CAAA,EAAoB;IAC7C,OAAOC,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E,CAAC;EACDC,QAAQA,CAAA,EAAoB;IAC1B,OAAOH,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E,CAAC;EACDE,YAAYA,CAAA,EAAyB;IACnC,OAAOJ,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E,CAAC;EACDG,cAAcA,CAAA,EAAyB;IACrC,OAAOL,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E,CAAC;EACDI,iBAAiBA,CAAA,EAAqB;IACpC,OAAON,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GACpCb,QAAQ,GACRc,gCAAmB,CAACC,YAAY,CAAO,2BAA2B,CAAC","ignoreList":[]}
|
package/lib/commonjs/index.js
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
+
exports.checkAvailability = checkAvailability;
|
6
7
|
exports.getHeartRate = getHeartRate;
|
7
8
|
exports.getMeasurement = getMeasurement;
|
8
9
|
exports.getSteps = getSteps;
|
@@ -21,4 +22,7 @@ async function getSteps(forNumberOfDay) {
|
|
21
22
|
async function getHeartRate(forNumberOfDay) {
|
22
23
|
return await _NativeReactNativeAppleHealthKit.default.getHeartRate(forNumberOfDay);
|
23
24
|
}
|
25
|
+
async function checkAvailability() {
|
26
|
+
return await _NativeReactNativeAppleHealthKit.default.checkAvailability();
|
27
|
+
}
|
24
28
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_NativeReactNativeAppleHealthKit","_interopRequireDefault","require","e","__esModule","default","requestHealthKitPermissions","ReactNativeAppleHealthKit","getMeasurement","getSteps","forNumberOfDay","getHeartRate"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"
|
1
|
+
{"version":3,"names":["_NativeReactNativeAppleHealthKit","_interopRequireDefault","require","e","__esModule","default","requestHealthKitPermissions","ReactNativeAppleHealthKit","getMeasurement","getSteps","forNumberOfDay","getHeartRate","checkAvailability"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;AAAA,IAAAA,gCAAA,GAAAC,sBAAA,CAAAC,OAAA;AAI2C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpC,eAAeG,2BAA2BA,CAAA,EAAoB;EACnE,OAAO,MAAMC,wCAAyB,CAACD,2BAA2B,CAAC,CAAC;AACtE;AAEO,eAAeE,cAAcA,CAAA,EAAyB;EAC3D,OAAO,MAAMD,wCAAyB,CAACC,cAAc,CAAC,CAAC;AACzD;AAEO,eAAeC,QAAQA,CAACC,cAAsB,EAAmB;EACtE,OAAO,MAAMH,wCAAyB,CAACE,QAAQ,CAACC,cAAc,CAAC;AACjE;AAEO,eAAeC,YAAYA,CAChCD,cAAsB,EACA;EACtB,OAAO,MAAMH,wCAAyB,CAACI,YAAY,CAACD,cAAc,CAAC;AACrE;AAEO,eAAeE,iBAAiBA,CAAA,EAAqB;EAC1D,OAAO,MAAML,wCAAyB,CAACK,iBAAiB,CAAC,CAAC;AAC5D","ignoreList":[]}
|
@@ -13,6 +13,9 @@ const NoOpSpec = {
|
|
13
13
|
},
|
14
14
|
getMeasurement() {
|
15
15
|
return Promise.reject(new Error('HealthKit is not available on Android.'));
|
16
|
+
},
|
17
|
+
checkAvailability() {
|
18
|
+
return Promise.reject(new Error('HealthKit is not available on Android.'));
|
16
19
|
}
|
17
20
|
};
|
18
21
|
export default Platform.OS === 'android' ? NoOpSpec : TurboModuleRegistry.getEnforcing('ReactNativeAppleHealthKit');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Platform","TurboModuleRegistry","NoOpSpec","requestHealthKitPermissions","Promise","reject","Error","getSteps","getHeartRate","getMeasurement","OS","getEnforcing"],"sourceRoot":"../../src","sources":["NativeReactNativeAppleHealthKit.ts"],"mappings":";;AACA,SAASA,QAAQ,EAAEC,mBAAmB,QAAQ,cAAc;
|
1
|
+
{"version":3,"names":["Platform","TurboModuleRegistry","NoOpSpec","requestHealthKitPermissions","Promise","reject","Error","getSteps","getHeartRate","getMeasurement","checkAvailability","OS","getEnforcing"],"sourceRoot":"../../src","sources":["NativeReactNativeAppleHealthKit.ts"],"mappings":";;AACA,SAASA,QAAQ,EAAEC,mBAAmB,QAAQ,cAAc;AAgC5D,MAAMC,QAAc,GAAG;EACrBC,2BAA2BA,CAAA,EAAoB;IAC7C,OAAOC,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E,CAAC;EACDC,QAAQA,CAAA,EAAoB;IAC1B,OAAOH,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E,CAAC;EACDE,YAAYA,CAAA,EAAyB;IACnC,OAAOJ,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E,CAAC;EACDG,cAAcA,CAAA,EAAyB;IACrC,OAAOL,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E,CAAC;EACDI,iBAAiBA,CAAA,EAAqB;IACpC,OAAON,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAAC,wCAAwC,CAAC,CAAC;EAC5E;AACF,CAAC;AAED,eAAeN,QAAQ,CAACW,EAAE,KAAK,SAAS,GACpCT,QAAQ,GACRD,mBAAmB,CAACW,YAAY,CAAO,2BAA2B,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
@@ -13,4 +13,7 @@ export async function getSteps(forNumberOfDay) {
|
|
13
13
|
export async function getHeartRate(forNumberOfDay) {
|
14
14
|
return await ReactNativeAppleHealthKit.getHeartRate(forNumberOfDay);
|
15
15
|
}
|
16
|
+
export async function checkAvailability() {
|
17
|
+
return await ReactNativeAppleHealthKit.checkAvailability();
|
18
|
+
}
|
16
19
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["ReactNativeAppleHealthKit","requestHealthKitPermissions","getMeasurement","getSteps","forNumberOfDay","getHeartRate"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,yBAAyB,MAIzB,sCAAmC;AAE1C,OAAO,eAAeC,2BAA2BA,CAAA,EAAoB;EACnE,OAAO,MAAMD,yBAAyB,CAACC,2BAA2B,CAAC,CAAC;AACtE;AAEA,OAAO,eAAeC,cAAcA,CAAA,EAAyB;EAC3D,OAAO,MAAMF,yBAAyB,CAACE,cAAc,CAAC,CAAC;AACzD;AAEA,OAAO,eAAeC,QAAQA,CAACC,cAAsB,EAAmB;EACtE,OAAO,MAAMJ,yBAAyB,CAACG,QAAQ,CAACC,cAAc,CAAC;AACjE;AAEA,OAAO,eAAeC,YAAYA,CAChCD,cAAsB,EACA;EACtB,OAAO,MAAMJ,yBAAyB,CAACK,YAAY,CAACD,cAAc,CAAC;AACrE","ignoreList":[]}
|
1
|
+
{"version":3,"names":["ReactNativeAppleHealthKit","requestHealthKitPermissions","getMeasurement","getSteps","forNumberOfDay","getHeartRate","checkAvailability"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,yBAAyB,MAIzB,sCAAmC;AAE1C,OAAO,eAAeC,2BAA2BA,CAAA,EAAoB;EACnE,OAAO,MAAMD,yBAAyB,CAACC,2BAA2B,CAAC,CAAC;AACtE;AAEA,OAAO,eAAeC,cAAcA,CAAA,EAAyB;EAC3D,OAAO,MAAMF,yBAAyB,CAACE,cAAc,CAAC,CAAC;AACzD;AAEA,OAAO,eAAeC,QAAQA,CAACC,cAAsB,EAAmB;EACtE,OAAO,MAAMJ,yBAAyB,CAACG,QAAQ,CAACC,cAAc,CAAC;AACjE;AAEA,OAAO,eAAeC,YAAYA,CAChCD,cAAsB,EACA;EACtB,OAAO,MAAMJ,yBAAyB,CAACK,YAAY,CAACD,cAAc,CAAC;AACrE;AAEA,OAAO,eAAeE,iBAAiBA,CAAA,EAAqB;EAC1D,OAAO,MAAMN,yBAAyB,CAACM,iBAAiB,CAAC,CAAC;AAC5D","ignoreList":[]}
|
@@ -22,6 +22,7 @@ export interface Spec extends TurboModule {
|
|
22
22
|
getSteps(daysBefore: number): Promise<Step[]>;
|
23
23
|
getHeartRate(daysBefore: number): Promise<HeartRate[]>;
|
24
24
|
getMeasurement(): Promise<Measurement>;
|
25
|
+
checkAvailability(): Promise<boolean>;
|
25
26
|
}
|
26
27
|
declare const _default: Spec;
|
27
28
|
export default _default;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"NativeReactNativeAppleHealthKit.d.ts","sourceRoot":"","sources":["../../../../src/NativeReactNativeAppleHealthKit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"NativeReactNativeAppleHealthKit.d.ts","sourceRoot":"","sources":["../../../../src/NativeReactNativeAppleHealthKit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;;AAoBD,wBAEwE"}
|
@@ -3,4 +3,5 @@ export declare function requestHealthKitPermissions(): Promise<string>;
|
|
3
3
|
export declare function getMeasurement(): Promise<Measurement>;
|
4
4
|
export declare function getSteps(forNumberOfDay: number): Promise<Step[]>;
|
5
5
|
export declare function getHeartRate(forNumberOfDay: number): Promise<HeartRate[]>;
|
6
|
+
export declare function checkAvailability(): Promise<boolean>;
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAkC,EAChC,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,IAAI,EACV,MAAM,mCAAmC,CAAC;AAE3C,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAEnE;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAE3D;AAED,wBAAsB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAEtE;AAED,wBAAsB,YAAY,CAChC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtB"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAkC,EAChC,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,IAAI,EACV,MAAM,mCAAmC,CAAC;AAE3C,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAEnE;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAE3D;AAED,wBAAsB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAEtE;AAED,wBAAsB,YAAY,CAChC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtB;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE1D"}
|
@@ -22,6 +22,7 @@ export interface Spec extends TurboModule {
|
|
22
22
|
getSteps(daysBefore: number): Promise<Step[]>;
|
23
23
|
getHeartRate(daysBefore: number): Promise<HeartRate[]>;
|
24
24
|
getMeasurement(): Promise<Measurement>;
|
25
|
+
checkAvailability(): Promise<boolean>;
|
25
26
|
}
|
26
27
|
declare const _default: Spec;
|
27
28
|
export default _default;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"NativeReactNativeAppleHealthKit.d.ts","sourceRoot":"","sources":["../../../../src/NativeReactNativeAppleHealthKit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"NativeReactNativeAppleHealthKit.d.ts","sourceRoot":"","sources":["../../../../src/NativeReactNativeAppleHealthKit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;;AAoBD,wBAEwE"}
|
@@ -3,4 +3,5 @@ export declare function requestHealthKitPermissions(): Promise<string>;
|
|
3
3
|
export declare function getMeasurement(): Promise<Measurement>;
|
4
4
|
export declare function getSteps(forNumberOfDay: number): Promise<Step[]>;
|
5
5
|
export declare function getHeartRate(forNumberOfDay: number): Promise<HeartRate[]>;
|
6
|
+
export declare function checkAvailability(): Promise<boolean>;
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAkC,EAChC,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,IAAI,EACV,MAAM,mCAAmC,CAAC;AAE3C,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAEnE;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAE3D;AAED,wBAAsB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAEtE;AAED,wBAAsB,YAAY,CAChC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtB"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAkC,EAChC,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,IAAI,EACV,MAAM,mCAAmC,CAAC;AAE3C,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAEnE;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAE3D;AAED,wBAAsB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAEtE;AAED,wBAAsB,YAAY,CAChC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtB;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE1D"}
|
package/package.json
CHANGED
@@ -28,6 +28,7 @@ export interface Spec extends TurboModule {
|
|
28
28
|
getSteps(daysBefore: number): Promise<Step[]>;
|
29
29
|
getHeartRate(daysBefore: number): Promise<HeartRate[]>;
|
30
30
|
getMeasurement(): Promise<Measurement>;
|
31
|
+
checkAvailability(): Promise<boolean>;
|
31
32
|
}
|
32
33
|
|
33
34
|
const NoOpSpec: Spec = {
|
@@ -43,6 +44,9 @@ const NoOpSpec: Spec = {
|
|
43
44
|
getMeasurement(): Promise<Measurement> {
|
44
45
|
return Promise.reject(new Error('HealthKit is not available on Android.'));
|
45
46
|
},
|
47
|
+
checkAvailability(): Promise<boolean> {
|
48
|
+
return Promise.reject(new Error('HealthKit is not available on Android.'));
|
49
|
+
},
|
46
50
|
};
|
47
51
|
|
48
52
|
export default Platform.OS === 'android'
|
package/src/index.tsx
CHANGED
@@ -21,3 +21,7 @@ export async function getHeartRate(
|
|
21
21
|
): Promise<HeartRate[]> {
|
22
22
|
return await ReactNativeAppleHealthKit.getHeartRate(forNumberOfDay);
|
23
23
|
}
|
24
|
+
|
25
|
+
export async function checkAvailability(): Promise<boolean> {
|
26
|
+
return await ReactNativeAppleHealthKit.checkAvailability();
|
27
|
+
}
|