Skip to content

Commit ed90df6

Browse files
author
Aaron Dsilva
committed
get water samples method added
1 parent bfa18fe commit ed90df6

8 files changed

+96
-0
lines changed

RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.h

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
- (void)saveWater:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback;
1616
- (void)getWater:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback;
17+
- (void)getWaterSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback;
1718

1819
- (void)dietary_getEnergyConsumedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback;
1920
- (void)dietary_getProteinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback;

RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.m

+35
Original file line numberDiff line numberDiff line change
@@ -533,4 +533,39 @@ - (void)getWater:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback
533533
}];
534534
}
535535

536+
- (void)getWaterSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback
537+
{
538+
HKQuantityType *dietaryWaterType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryWater];
539+
HKUnit *literUnit = [HKUnit literUnit];
540+
NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit];
541+
BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false];
542+
NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil];
543+
NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]];
544+
BOOL includeManuallyAdded = [RCTAppleHealthKit boolFromOptions:input key:@"includeManuallyAdded" withDefault:true];
545+
546+
547+
if(startDate == nil) {
548+
callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]);
549+
return;
550+
}
551+
552+
NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate];
553+
554+
[self fetchQuantitySamplesOfType:dietaryWaterType
555+
unit:literUnit
556+
predicate:predicate
557+
ascending:ascending
558+
limit:limit
559+
completion:^(NSArray *results, NSError *error) {
560+
if(results){
561+
callback(@[[NSNull null], results]);
562+
return;
563+
} else {
564+
NSLog(@"An error occured while retrieving the water sample %@. The error was: ", error);
565+
callback(@[RCTMakeError(@"An error occured while retrieving the water sample", error, nil)]);
566+
return;
567+
}
568+
}];
569+
}
570+
536571
@end

RCTAppleHealthKit/RCTAppleHealthKit.m

+7
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,16 @@ + (BOOL)requiresMainQueueSetup
326326

327327
RCT_EXPORT_METHOD(getWater:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback)
328328
{
329+
[self _initializeHealthStore];
329330
[self getWater:input callback:callback];
330331
}
331332

333+
RCT_EXPORT_METHOD(getWaterSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback)
334+
{
335+
[self _initializeHealthStore];
336+
[self getWaterSamples:input callback:callback];
337+
}
338+
332339
RCT_EXPORT_METHOD(getHeartRateSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback)
333340
{
334341
[self _initializeHealthStore];

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ they are splitted in the following categories
197197
- [saveFood](/docs/saveFood.md)
198198
- [saveWater](/docs/saveWater.md)
199199
- [getWater](/docs/getWater.md)
200+
- [getWaterSamples](/docs/getWaterSamples.md)
200201
201202
### Fitness Methods
202203

SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
* [saveFood](/docs/saveFood.md)
5757
* [saveWater](/docs/saveWater.md)
5858
* [getWater](/docs/getWater.md)
59+
* [getWaterSamples](/docs/getWaterSamples.md)
5960

6061
## Fitness Methods
6162

docs/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ There is a gitbook version for the documentation on this [link](https://vinicius
6262
- [saveFood](saveFood.md)
6363
- [saveWater](saveWater.md)
6464
- [getWater](getWater.md)
65+
- [getWaterSamples](getWaterSamples.md)
6566
- [getTotalFatSamples](getTotalFatSamples.md)
6667

6768
### Fitness Methods

docs/getWaterSamples.md

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# getWaterSamples
2+
3+
Get the total amount of consumed water in litres for a specific time period
4+
5+
Example input options:
6+
7+
```javascript
8+
let options = {
9+
unit: 'litre', // optional: default: litre
10+
startDate: new Date(2021, 0, 0).toISOString(), // required
11+
endDate: new Date().toISOString(), // required
12+
includeManuallyAdded: false, // optional: default true
13+
ascending: false, // optional; default false
14+
limit: 10, // optional; default no limit
15+
}
16+
```
17+
18+
Call the method:
19+
20+
```javascript
21+
AppleHealthKit.getWaterSamples(
22+
(options: HealthInputOptions),
23+
(err: Object, results: Array<HealthValue>) => {
24+
if (err) {
25+
return
26+
}
27+
console.log(results)
28+
},
29+
)
30+
```
31+
32+
Example output:
33+
34+
```json
35+
[
36+
{
37+
"id": "3d366e60-4f7c-4f72-b0ce-479ea19279b8", // The universally unique identifier (UUID) for this HealthKit object.
38+
"endDate": "2021-03-22T16:34:00.000-0300",
39+
"sourceId": "com.apple.Health",
40+
"sourceName": "Health",
41+
"startDate": "2021-03-22T15:34:00.000-0300",
42+
"value": "0.6"
43+
}
44+
]
45+
```

index.d.ts

+5
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,11 @@ declare module 'react-native-health' {
217217
callback: (err: string, results: HealthValue) => void,
218218
): void
219219

220+
getWaterSamples(
221+
options: HealthInputOptions,
222+
callback: (err: string, results: Array<HealthValue>) => void,
223+
): void
224+
220225
getHeartRateSamples(
221226
options: HealthInputOptions,
222227
callback: (err: string, results: Array<HealthValue>) => void,

0 commit comments

Comments
 (0)