diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Utils.h b/RCTAppleHealthKit/RCTAppleHealthKit+Utils.h index b2bfcaf7fc1f5951c632335f545595f5f9216f0a..3c44029b63633af9c56e2c58f4945f6014ff366f 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Utils.h +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Utils.h @@ -14,10 +14,14 @@ + (NSString *)buildISO8601StringFromDate:(NSDate *)date; + (NSPredicate *)predicateForSamplesToday; + (NSPredicate *)predicateForSamplesOnDay:(NSDate *)date; ++ (NSPredicate *)predicateForSamplesBetweenDates:(NSDate *)startDate endDate:(NSDate *)endDate; + (NSPredicate *)predicateForSamplesOnDayFromTimestamp:(NSString *)timestamp; + (double)doubleValueFromOptions:(NSDictionary *)options; + (NSDate *)dateFromOptions:(NSDictionary *)options; + (NSDate *)dateFromOptionsDefaultNow:(NSDictionary *)options; ++ (NSDate *)startDateFromOptions:(NSDictionary *)options; ++ (NSDate *)endDateFromOptions:(NSDictionary *)options; ++ (NSDate *)endDateFromOptionsDefaultNow:(NSDictionary *)options; + (HKUnit *)hkUnitFromOptions:(NSDictionary *)options; @end diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Utils.m b/RCTAppleHealthKit/RCTAppleHealthKit+Utils.m index 58bef7c87030914e91a4c446e92ce6c0a22e62fc..8191f960075ffa23fa4db80ad0dc8a1fbe166f8a 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Utils.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Utils.m @@ -49,6 +49,15 @@ return [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionStrictStartDate]; } ++ (NSPredicate *)predicateForSamplesBetweenDates:(NSDate *)startDate endDate:(NSDate *)endDate { + NSCalendar *calendar = [NSCalendar currentCalendar]; + NSDate *start = [calendar startOfDayForDate:startDate]; + NSDate *end = endDate; +// NSDate *endDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:1 toDate:startDate options:0]; + return [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionStrictStartDate]; +} + + + (double)doubleValueFromOptions:(NSDictionary *)options { @@ -66,7 +75,6 @@ return date; } - + (NSDate *)dateFromOptionsDefaultNow:(NSDictionary *)options { NSString *dateString = [options objectForKey:@"date"]; if(dateString != nil){ @@ -81,6 +89,44 @@ return now; } + +//TODO: make a generic function that can return NSDate by key... have 'default now' as option + + ++ (NSDate *)startDateFromOptions:(NSDictionary *)options { + NSString *dateString = [options objectForKey:@"startDate"]; + NSDate *date; + if(dateString != nil){ + date = [RCTAppleHealthKit parseISO8601DateFromString:dateString]; + return date; + } + return date; +} + ++ (NSDate *)endDateFromOptions:(NSDictionary *)options { + NSString *dateString = [options objectForKey:@"endDate"]; + NSDate *date; + if(dateString != nil){ + date = [RCTAppleHealthKit parseISO8601DateFromString:dateString]; + } + return date; +} + ++ (NSDate *)endDateFromOptionsDefaultNow:(NSDictionary *)options { + NSString *dateString = [options objectForKey:@"endDate"]; + NSDate *date; + if(dateString != nil){ + date = [RCTAppleHealthKit parseISO8601DateFromString:dateString]; + return date; + } + if(date == nil){ + date = [NSDate date]; + } + return date; +} + + + + (HKUnit *)hkUnitFromOptions:(NSDictionary *)options { NSString *unitString = [options objectForKey:@"unit"]; HKUnit *theUnit;