diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.h b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.h index fba0f768..94493be1 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.h +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.h @@ -20,4 +20,42 @@ - (void)dietary_getProteinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; - (void)dietary_getFiberSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; - (void)dietary_getTotalFatSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +- (void)dietary_getSugarSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getFatMonounsaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getFatPolyunsaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getFatSaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getCholesterolSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +- (void)dietary_getThiaminSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getRiboflavinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getNiacinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getPantothenicAcidSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getBiotinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getFolateSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getVitaminASamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getVitaminB6Samples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getVitaminB12Samples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getVitaminCSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getVitaminDSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getVitaminESamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getVitaminKSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +- (void)dietary_getCalciumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getChlorideSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getIronSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getMagnesiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getPhosphorusSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getPotassiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getSodiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getZincSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getCaffeineSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +- (void)dietary_getChromiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getCopperSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getIodineSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getManganeseSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getMolybdenumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)dietary_getSeleniumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + @end diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.m b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.m index 9d532ee4..eaef3b59 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Dietary.m @@ -139,6 +139,1029 @@ - (void)dietary_getFiberSamples:(NSDictionary *)input callback:(RCTResponseSende }]; } +- (void)dietary_getSugarSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *sugar = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySugar]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:sugar + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the sugar sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the sugar sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getFatMonounsaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *fatMonounsaturated = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatMonounsaturated]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:fatMonounsaturated + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the fat monounsaturated sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the fat monounsaturated sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getFatPolyunsaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *fatPolyunsaturated = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatPolyunsaturated]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:fatPolyunsaturated + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the fat polyunsaturated sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the fat polyunsaturated sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getFatSaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *fatSaturated = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFatSaturated]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:fatSaturated + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the fat saturated sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the fat saturated sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getCholesterolSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *cholesterol = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCholesterol]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:cholesterol + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the cholesterol sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the cholesterol sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getThiaminSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *thiamin = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryThiamin]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:thiamin + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the thiamin sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the thiamin sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getRiboflavinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *riboflavin = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryRiboflavin]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:riboflavin + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the riboflavin sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the riboflavin sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getNiacinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *niacin = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryNiacin]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:niacin + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the niacin sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the niacin sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getPantothenicAcidSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *pantothenicAcid = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPantothenicAcid]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:pantothenicAcid + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the pantothenicAcid sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the pantothenicAcid sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getBiotinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *biotin = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryBiotin]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:biotin + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the biotin sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the biotin sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getFolateSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *folate = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryFolate]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:folate + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the folate sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the folate sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getVitaminASamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *vitaminA = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminA]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:vitaminA + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the vitaminA sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the vitaminA sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getVitaminB6Samples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *vitaminB6 = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminB6]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:vitaminB6 + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the vitaminB6 sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the vitaminB6 sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getVitaminB12Samples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *vitamin12 = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminB12]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:vitamin12 + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the vitamin12 sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the vitamin12 sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getVitaminCSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *vitaminC = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminC]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:vitaminC + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the vitaminC sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the vitaminC sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getVitaminDSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *vitaminD = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminD]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:vitaminD + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the vitaminD sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the vitaminD sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getVitaminESamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *vitaminE = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminE]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:vitaminE + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the vitaminE sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the vitaminE sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getVitaminKSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *vitaminK = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryVitaminK]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:vitaminK + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the vitaminK sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the vitaminK sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getCalciumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *calcium = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCalcium]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:calcium + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the calcium sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the calcium sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getChlorideSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *chloride = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryChloride]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:chloride + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the chloride sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the chloride sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getIronSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *iron = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryIron]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:iron + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the iron sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the iron sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getMagnesiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *magnesium = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryMagnesium]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:magnesium + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the magnesium sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the magnesium sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getPhosphorusSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *phosphorus = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPhosphorus]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:phosphorus + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the phosphorus sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the phosphorus sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getPotassiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *potassium = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryPotassium]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:potassium + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the potassium sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the potassium sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getSodiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *sodium = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySodium]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:sodium + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the sodium sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the sodium sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getZincSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *zinc = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryZinc]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:zinc + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the zinc sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the zinc sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getCaffeineSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *caffeine = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCaffeine]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:caffeine + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the caffeine sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the caffeine sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getChromiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *chromium = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryChromium]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:chromium + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the chromium sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the chromium sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getCopperSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *copper = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCopper]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:copper + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the copper sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the copper sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getIodineSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *iodine = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryIodine]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:iodine + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the iodine sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the iodine sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getManganeseSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *manganese = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryManganese]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:manganese + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the manganese sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the manganese sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getMolybdenumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *molybdenum = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryMolybdenum]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:molybdenum + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the molybdenum sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the molybdenum sample", error, nil)]); + return; + } + }]; +} + +- (void)dietary_getSeleniumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *selenium = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietarySelenium]; + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit gramUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:selenium + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"An error occured while retrieving the selenium sample %@. The error was: ", error); + callback(@[RCTMakeError(@"An error occured while retrieving the selenium sample", error, nil)]); + return; + } + }]; +} + - (void)saveFood:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback { NSString *foodNameValue = [RCTAppleHealthKit stringFromOptions:input key:@"foodName" withDefault:nil]; diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m b/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m index 287399fc..e66ef445 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+TypesAndPermissions.m @@ -124,6 +124,8 @@ - (nullable HKObjectType *)getReadPermFromText:(nonnull NSString*)key { return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCholesterol]; } else if ([@"Copper" isEqualToString:key]) { return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryCopper]; + } else if ([@"Chromium" isEqualToString:key]) { + return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryChromium]; } else if ([@"EnergyConsumed" isEqualToString:key]) { return [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed]; } else if ([@"FatMonounsaturated" isEqualToString:key]) { diff --git a/RCTAppleHealthKit/RCTAppleHealthKit.m b/RCTAppleHealthKit/RCTAppleHealthKit.m index e8ddce17..5a1adffe 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit.m @@ -345,6 +345,171 @@ + (BOOL)requiresMainQueueSetup [self dietary_getTotalFatSamples:input callback:callback]; } +RCT_EXPORT_METHOD(getSugarSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getSugarSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getFatMonounsaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getFatMonounsaturatedSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getFatPolyunsaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getFatPolyunsaturatedSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getFatSaturatedSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getFatSaturatedSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getCholesterolSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getCholesterolSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getThiaminSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getThiaminSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getRiboflavinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getRiboflavinSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getNiacinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getNiacinSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getPantothenicAcidSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getPantothenicAcidSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getBiotinSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getBiotinSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getFolateSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getFolateSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getVitaminASamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getVitaminASamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getVitaminB6Samples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getVitaminB6Samples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getVitaminB12Samples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getVitaminB12Samples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getVitaminCSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getVitaminCSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getVitaminDSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getVitaminDSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getVitaminESamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getVitaminESamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getVitaminKSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getVitaminKSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getCalciumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getCalciumSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getChlorideSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getChlorideSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getIronSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getIronSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getMagnesiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getMagnesiumSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getPhosphorusSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getPhosphorusSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getPotassiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getPotassiumSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getSodiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getSodiumSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getZincSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getZincSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getCaffeineSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getCaffeineSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getChromiumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getChromiumSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getCopperSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getCopperSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getIodineSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getIodineSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getManganeseSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getManganeseSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getMolybdenumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getMolybdenumSamples:input callback:callback]; +} + +RCT_EXPORT_METHOD(getSeleniumSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self dietary_getSeleniumSamples:input callback:callback]; +} + RCT_EXPORT_METHOD(saveFood:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) { [self _initializeHealthStore]; diff --git a/README.md b/README.md index e2901e2c..a39dead0 100644 --- a/README.md +++ b/README.md @@ -210,6 +210,39 @@ All the documentation is under the [docs](/docs) folder. They are split into the - [getProteinSamples](/docs/getProteinSamples.md) - [getFiberSamples](/docs/getFiberSamples.md) - [getTotalFatSamples](/docs/getTotalFatSamples.md) +- [getSugarSamples](/docs/getSugarSamples.md) +- [getFatMonounsaturatedSamples](/docs/getFatMonounsaturatedSamples.md) +- [getFatPolyunsaturatedSamples](/docs/getFatPolyunsaturatedSamples.md) +- [getFatSaturatedSamples](/docs/getFatSaturatedSamples.md) +- [getCholesterolSamples](/docs/getCholesterolSamples.md) +- [getThiaminSamples](/docs/getThiaminSamples.md) +- [getRiboflavinSamples](/docs/getRiboflavinSamples.md) +- [getNiacinSamples](/docs/getNiacinSamples.md) +- [getPantothenicAcidSamples](/docs/getPantothenicAcidSamples.md) +- [getBiotinSamples](/docs/getBiotinSamples.md) +- [getFolateSamples](/docs/getFolateSamples.md) +- [getVitaminASamples](/docs/getVitaminASamples.md) +- [getVitaminB6Samples](/docs/getVitaminB6Samples.md) +- [getVitaminB12Samples](/docs/getVitaminB12Samples.md) +- [getVitaminCSamples](/docs/getVitaminCSamples.md) +- [getVitaminDSamples](/docs/getVitaminDSamples.md) +- [getVitaminESamples](/docs/getVitaminESamples.md) +- [getVitaminKSamples](/docs/getVitaminKSamples.md) +- [getCalciumSamples](/docs/getCalciumSamples.md) +- [getChlorideSamples](/docs/getChlorideSamples.md) +- [getIronSamples](/docs/getIronSamples.md) +- [getMagnesiumSamples](/docs/getMagnesiumSamples.md) +- [getPhosphorusSamples](/docs/getPhosphorusSamples.md) +- [getPotassiumSamples](/docs/getPotassiumSamples.md) +- [getSodiumSamples](/docs/getSodiumSamples.md) +- [getZincSamples](/docs/getZincSamples.md) +- [getCaffeineSamples](/docs/getCaffeineSamples.md) +- [getChromiumSamples](/docs/getChromiumSamples.md) +- [getCopperSamples](/docs/getCopperSamples.md) +- [getIodineSamples](/docs/getIodineSamples.md) +- [getManganeseSamples](/docs/getManganeseSamples.md) +- [getMolybdenumSamples](/docs/getMolybdenumSamples.md) +- [getSeleniumSamples](/docs/getSeleniumSamples.md) - [saveFood](/docs/saveFood.md) - [saveWater](/docs/saveWater.md) - [getWater](/docs/getWater.md) diff --git a/docs/README.md b/docs/README.md index 5c056854..beb494b5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -57,11 +57,47 @@ ### Dietary Methods +- [getEnergyConsumedSamples](getEnergyConsumedSamples.md) +- [getProteinSamples](getProteinSamples.md) +- [getFiberSamples](getFiberSamples.md) +- [getTotalFatSamples](getTotalFatSamples.md) +- [getSugarSamples](getSugarSamples.md) +- [getFatMonounsaturatedSamples](getFatMonounsaturatedSamples.md) +- [getFatPolyunsaturatedSamples](getFatPolyunsaturatedSamples.md) +- [getFatSaturatedSamples](getFatSaturatedSamples.md) +- [getCholesterolSamples](getCholesterolSamples.md) +- [getThiaminSamples](getThiaminSamples.md) +- [getRiboflavinSamples](getRiboflavinSamples.md) +- [getNiacinSamples](getNiacinSamples.md) +- [getPantothenicAcidSamples](getPantothenicAcidSamples.md) +- [getBiotinSamples](getBiotinSamples.md) +- [getFolateSamples](getFolateSamples.md) +- [getVitaminASamples](getVitaminASamples.md) +- [getVitaminB6Samples](getVitaminB6Samples.md) +- [getVitaminB12Samples](getVitaminB12Samples.md) +- [getVitaminCSamples](getVitaminCSamples.md) +- [getVitaminDSamples](getVitaminDSamples.md) +- [getVitaminESamples](getVitaminESamples.md) +- [getVitaminKSamples](getVitaminKSamples.md) +- [getCalciumSamples](getCalciumSamples.md) +- [getChlorideSamples](getChlorideSamples.md) +- [getIronSamples](getIronSamples.md) +- [getMagnesiumSamples](getMagnesiumSamples.md) +- [getPhosphorusSamples](getPhosphorusSamples.md) +- [getPotassiumSamples](getPotassiumSamples.md) +- [getSodiumSamples](getSodiumSamples.md) +- [getZincSamples](getZincSamples.md) +- [getCaffeineSamples](getCaffeineSamples.md) +- [getChromiumSamples](getChromiumSamples.md) +- [getCopperSamples](getCopperSamples.md) +- [getIodineSamples](getIodineSamples.md) +- [getManganeseSamples](getManganeseSamples.md) +- [getMolybdenumSamples](getMolybdenumSamples.md) +- [getSeleniumSamples](getSeleniumSamples.md) - [saveFood](saveFood.md) - [saveWater](saveWater.md) - [getWater](getWater.md) - [getWaterSamples](getWaterSamples.md) -- [getTotalFatSamples](getTotalFatSamples.md) ### Fitness Methods diff --git a/docs/getBiotinSamples.md b/docs/getBiotinSamples.md new file mode 100644 index 00000000..e0267bac --- /dev/null +++ b/docs/getBiotinSamples.md @@ -0,0 +1,45 @@ +# getBiotinSamples + +A quantity sample type that measures the amount of biotin consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Biotin` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getBiotinSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 4, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getCaffeineSamples.md b/docs/getCaffeineSamples.md new file mode 100644 index 00000000..ebdc30af --- /dev/null +++ b/docs/getCaffeineSamples.md @@ -0,0 +1,45 @@ +# getCaffeineSamples + +A quantity sample type that measures the amount of caffeine consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Caffeine` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getCaffeineSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 21, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getCalciumSamples.md b/docs/getCalciumSamples.md new file mode 100644 index 00000000..9bdeebc1 --- /dev/null +++ b/docs/getCalciumSamples.md @@ -0,0 +1,45 @@ +# getCalciumSamples + +A quantity sample type that measures the amount of Calcium consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Calcium` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getCalciumSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 30, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getChlorideSamples.md b/docs/getChlorideSamples.md new file mode 100644 index 00000000..e3310739 --- /dev/null +++ b/docs/getChlorideSamples.md @@ -0,0 +1,45 @@ +# getChlorideSamples + +A quantity sample type that measures the amount of Chloride consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Chloride` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getChlorideSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 32, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getCholesterolSamples.md b/docs/getCholesterolSamples.md new file mode 100644 index 00000000..4e698b65 --- /dev/null +++ b/docs/getCholesterolSamples.md @@ -0,0 +1,45 @@ +# getCholesterolSamples + +A quantity sample type that measures the amount of cholesterol consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Cholesterol` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getCholesterolSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 16, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getChromiumSamples.md b/docs/getChromiumSamples.md new file mode 100644 index 00000000..a945c478 --- /dev/null +++ b/docs/getChromiumSamples.md @@ -0,0 +1,45 @@ +# getChromiumSamples + +A quantity sample type that measures the amount of chromium consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Chromium` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getChromiumSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 26, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getCopperSamples.md b/docs/getCopperSamples.md new file mode 100644 index 00000000..123a4892 --- /dev/null +++ b/docs/getCopperSamples.md @@ -0,0 +1,45 @@ +# getCopperSamples + +A quantity sample type that measures the amount of copper consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Copper` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getCopperSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 32, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getFatMonounsaturatedSamples.md b/docs/getFatMonounsaturatedSamples.md new file mode 100644 index 00000000..c09492f2 --- /dev/null +++ b/docs/getFatMonounsaturatedSamples.md @@ -0,0 +1,45 @@ +# getFatMonounsaturatedSamples + +A quantity sample type that measures the amount of fat monounsaturated consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.FatMonounsaturated` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getFatMonounsaturatedSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 39, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getFatPolyunsaturatedSamples.md b/docs/getFatPolyunsaturatedSamples.md new file mode 100644 index 00000000..602f5b84 --- /dev/null +++ b/docs/getFatPolyunsaturatedSamples.md @@ -0,0 +1,45 @@ +# getFatPolyunsaturatedSamples + +A quantity sample type that measures the amount of fat polyunsaturated consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.FatPolyunsaturated` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getFatPolyunsaturatedSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 20, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getFatSaturatedSamples.md b/docs/getFatSaturatedSamples.md new file mode 100644 index 00000000..e5765c6f --- /dev/null +++ b/docs/getFatSaturatedSamples.md @@ -0,0 +1,45 @@ +# getFatSaturatedSamples + +A quantity sample type that measures the amount of fat saturated consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.FatSaturated` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getFatSaturatedSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 16, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getFolateSamples.md b/docs/getFolateSamples.md new file mode 100644 index 00000000..ee97109c --- /dev/null +++ b/docs/getFolateSamples.md @@ -0,0 +1,45 @@ +# getFolateSamples + +A quantity sample type that measures the amount of folate consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Folate` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getFolateSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 4, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getIodineSamples.md b/docs/getIodineSamples.md new file mode 100644 index 00000000..41762fbc --- /dev/null +++ b/docs/getIodineSamples.md @@ -0,0 +1,45 @@ +# getIodineSamples + +A quantity sample type that measures the amount of iodine consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Iodine` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getIodineSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 12, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getIronSamples.md b/docs/getIronSamples.md new file mode 100644 index 00000000..721f193a --- /dev/null +++ b/docs/getIronSamples.md @@ -0,0 +1,45 @@ +# getIronSamples + +A quantity sample type that measures the amount of iron consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Iron` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getIronSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 22, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getMagnesiumSamples.md b/docs/getMagnesiumSamples.md new file mode 100644 index 00000000..a137a987 --- /dev/null +++ b/docs/getMagnesiumSamples.md @@ -0,0 +1,45 @@ +# getMagnesiumSamples + +A quantity sample type that measures the amount of magnesium consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Magnesium` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getMagnesiumSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 26, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getManganeseSamples.md b/docs/getManganeseSamples.md new file mode 100644 index 00000000..ad3b68b2 --- /dev/null +++ b/docs/getManganeseSamples.md @@ -0,0 +1,45 @@ +# getManganeseSamples + +A quantity sample type that measures the amount of manganese consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Manganese` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getManganeseSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 17, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getMolybdenumSamples.md b/docs/getMolybdenumSamples.md new file mode 100644 index 00000000..d806ed6f --- /dev/null +++ b/docs/getMolybdenumSamples.md @@ -0,0 +1,45 @@ +# getMolybdenumSamples + +A quantity sample type that measures the amount of molybdenum consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Molybdenum` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getMolybdenumSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 11, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getNiacinSamples.md b/docs/getNiacinSamples.md new file mode 100644 index 00000000..e36e121c --- /dev/null +++ b/docs/getNiacinSamples.md @@ -0,0 +1,45 @@ +# getNiacinSamples + +A quantity sample type that measures the amount of niacin consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Niacin` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getNiacinSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 13, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getPantothenicAcidSamples.md b/docs/getPantothenicAcidSamples.md new file mode 100644 index 00000000..d069cdaf --- /dev/null +++ b/docs/getPantothenicAcidSamples.md @@ -0,0 +1,45 @@ +# getPantothenicAcidSamples + +A quantity sample type that measures the amount of pantothenic acid consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.PantothenicAcid` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getPantothenicAcidSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 2, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getPhosphorusSamples.md b/docs/getPhosphorusSamples.md new file mode 100644 index 00000000..e57daa13 --- /dev/null +++ b/docs/getPhosphorusSamples.md @@ -0,0 +1,45 @@ +# getPhosphorusSamples + +A quantity sample type that measures the amount of phosphorus consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Phosphorus` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getPhosphorusSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 10, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getPotassiumSamples.md b/docs/getPotassiumSamples.md new file mode 100644 index 00000000..9c2e8d65 --- /dev/null +++ b/docs/getPotassiumSamples.md @@ -0,0 +1,45 @@ +# getPotassiumSamples + +A quantity sample type that measures the amount of potassium consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Potassium` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getPotassiumSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 14, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getRiboflavinSamples.md b/docs/getRiboflavinSamples.md new file mode 100644 index 00000000..ff7b2891 --- /dev/null +++ b/docs/getRiboflavinSamples.md @@ -0,0 +1,45 @@ +# getRiboflavinSamples + +A quantity sample type that measures the amount of riboflavin consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Riboflavin` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getRiboflavinSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 10, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getSeleniumSamples.md b/docs/getSeleniumSamples.md new file mode 100644 index 00000000..08381273 --- /dev/null +++ b/docs/getSeleniumSamples.md @@ -0,0 +1,45 @@ +# getSeleniumSamples + +A quantity sample type that measures the amount of selenium consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Selenium` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getSeleniumSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 18, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getSodiumSamples.md b/docs/getSodiumSamples.md new file mode 100644 index 00000000..f1629e7f --- /dev/null +++ b/docs/getSodiumSamples.md @@ -0,0 +1,45 @@ +# getSodiumSamples + +A quantity sample type that measures the amount of sodium consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Sodium` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getSodiumSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 16, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getSugarSamples.md b/docs/getSugarSamples.md new file mode 100644 index 00000000..379ab958 --- /dev/null +++ b/docs/getSugarSamples.md @@ -0,0 +1,45 @@ +# getSugarSamples + +A quantity sample type that measures the amount of sugar consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Sugar` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getSugarSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 100, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getThiaminSamples.md b/docs/getThiaminSamples.md new file mode 100644 index 00000000..83b6bcd6 --- /dev/null +++ b/docs/getThiaminSamples.md @@ -0,0 +1,45 @@ +# getThiaminSamples + +A quantity sample type that measures the amount of thiamin consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Thiamin` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getThiaminSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 30, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getVitaminASamples.md b/docs/getVitaminASamples.md new file mode 100644 index 00000000..6ec53a51 --- /dev/null +++ b/docs/getVitaminASamples.md @@ -0,0 +1,45 @@ +# getVitaminASamples + +A quantity sample type that measures the amount of Vitamin A consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.VitaminA` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getVitaminASamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 23, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getVitaminB12Samples.md b/docs/getVitaminB12Samples.md new file mode 100644 index 00000000..efd2132c --- /dev/null +++ b/docs/getVitaminB12Samples.md @@ -0,0 +1,45 @@ +# getVitaminB12Samples + +A quantity sample type that measures the amount of Vitamin B12 consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.VitaminB12` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getVitaminB12Samples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 17, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getVitaminB6Samples.md b/docs/getVitaminB6Samples.md new file mode 100644 index 00000000..bae8784c --- /dev/null +++ b/docs/getVitaminB6Samples.md @@ -0,0 +1,45 @@ +# getVitaminB6Samples + +A quantity sample type that measures the amount of Vitamin B6 consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.VitaminB6` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getVitaminB6Samples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 20, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getVitaminCSamples.md b/docs/getVitaminCSamples.md new file mode 100644 index 00000000..978948e8 --- /dev/null +++ b/docs/getVitaminCSamples.md @@ -0,0 +1,45 @@ +# getVitaminCSamples + +A quantity sample type that measures the amount of Vitamin C consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.VitaminC` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getVitaminCSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 45, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getVitaminDSamples.md b/docs/getVitaminDSamples.md new file mode 100644 index 00000000..454eaa1c --- /dev/null +++ b/docs/getVitaminDSamples.md @@ -0,0 +1,45 @@ +# getVitaminDSamples + +A quantity sample type that measures the amount of Vitamin D consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.VitaminD` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getVitaminDSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 5, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getVitaminESamples.md b/docs/getVitaminESamples.md new file mode 100644 index 00000000..4a1184de --- /dev/null +++ b/docs/getVitaminESamples.md @@ -0,0 +1,45 @@ +# getVitaminESamples + +A quantity sample type that measures the amount of Vitamin E consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.VitaminE` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getVitaminESamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 10, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getVitaminKSamples.md b/docs/getVitaminKSamples.md new file mode 100644 index 00000000..a7239d8a --- /dev/null +++ b/docs/getVitaminKSamples.md @@ -0,0 +1,45 @@ +# getVitaminKSamples + +A quantity sample type that measures the amount of Vitamin K consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.VitaminK` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getVitaminKSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 3, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/getZincSamples.md b/docs/getZincSamples.md new file mode 100644 index 00000000..292021e9 --- /dev/null +++ b/docs/getZincSamples.md @@ -0,0 +1,45 @@ +# getZincSamples + +A quantity sample type that measures the amount of zinc consumed. + +Permission required: + +- `AppleHealthKit.Constants.Permissions.Zinc` + +Example input options: + +```javascript +let options = { + startDate: new Date(2021, 0, 0).toISOString(), // required + endDate: new Date().toISOString(), // optional; default now +} +``` + +Call the method: + +```javascript +AppleHealthKit.getZincSamples( + (options: HealthInputOptions), + (err: Object, results: HealthValue) => { + if (err) { + return + } + console.log(results) + }, +) +``` + +Example output: + +```json +[ + { + "endDate": "2021-04-01T22:00:00.000+0300", + "startDate": "2021-04-01T22:00:00.000+0300", + "value": 18, + "metadata": { + "HKWasUserEntered": false + } + } +] +``` diff --git a/docs/permissions.md b/docs/permissions.md index cbaf702b..a9c9fc44 100644 --- a/docs/permissions.md +++ b/docs/permissions.md @@ -50,6 +50,7 @@ AppleHealthKit.initHealthKit(permissions, (error: string) => { Cholesterol ConditionRecord Copper + Chromium CoverageRecord Electrocardiogram EnergyConsumed diff --git a/index.d.ts b/index.d.ts index 0cf0e280..ce4c304a 100644 --- a/index.d.ts +++ b/index.d.ts @@ -220,6 +220,171 @@ declare module 'react-native-health' { callback: (err: string, results: Array) => void, ): void + getSugarSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getFatMonounsaturatedSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getFatPolyunsaturatedSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getFatSaturatedSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getCholesterolSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getThiaminSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getRiboflavinSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getNiacinSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getPantothenicAcidSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getBiotinSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getFolateSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getVitaminASamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getVitaminB6Samples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getVitaminB12Samples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getVitaminCSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getVitaminDSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getVitaminESamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getVitaminKSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getCalciumSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getChlorideSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getIronSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getMagnesiumSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getPhosphorusSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getPotassiumSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getSodiumSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getZincSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getCaffeineSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getChromiumSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getCopperSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getIodineSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getManganeseSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getMolybdenumSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + + getSeleniumSamples( + options: HealthInputOptions, + callback: (err: string, results: Array) => void, + ): void + saveFood( options: HealthInputOptions, callback: (error: string, result: HealthValue) => void, @@ -743,6 +908,7 @@ declare module 'react-native-health' { ConditionRecord = 'ConditionRecord', Copper = 'Copper', CoverageRecord = 'CoverageRecord', + Chromium= 'Chromium', EnergyConsumed = 'EnergyConsumed', EnvironmentalAudioExposure = 'EnvironmentalAudioExposure', FatMonounsaturated = 'FatMonounsaturated', diff --git a/src/constants/Permissions.js b/src/constants/Permissions.js index 521fa61f..eb7d4e31 100644 --- a/src/constants/Permissions.js +++ b/src/constants/Permissions.js @@ -29,6 +29,7 @@ export const Permissions = { Cholesterol: 'Cholesterol', ConditionRecord: 'ConditionRecord', Copper: 'Copper', + Chromium: 'Chromium', CoverageRecord: 'CoverageRecord', EnergyConsumed: 'EnergyConsumed', EnvironmentalAudioExposure: 'EnvironmentalAudioExposure',