diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+NSUserDefaults.h b/RCTAppleHealthKit/RCTAppleHealthKit+NSUserDefaults.h index 6388b437b1c76c3d31067df4312ba8609aa26634..acac28b375fe98bd25f3e75f4eeb6817905d3773 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+NSUserDefaults.h +++ b/RCTAppleHealthKit/RCTAppleHealthKit+NSUserDefaults.h @@ -13,4 +13,7 @@ - (void)set_UserDefaultsByKey:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; - (void)reset_UserDefaultsByKey:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)get_TimestampByKey:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; +- (void)set_TimestampByKey:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + @end diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+NSUserDefaults.m b/RCTAppleHealthKit/RCTAppleHealthKit+NSUserDefaults.m index 458257a7a8bab9fc72662c5e1beaa5fbed93698f..2f3e7af1e725aa120e27b45f7fa31335ce2b94b1 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+NSUserDefaults.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+NSUserDefaults.m @@ -32,4 +32,43 @@ callback(@[[NSNull null], result]); } +- (void)get_TimestampByKey:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + NSString *key = [input objectForKey:@"key"]; + NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; + NSString *filePath = [url.path stringByAppendingPathComponent:key]; + NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; + + if (content != nil) { + NSDictionary *result = @{ + @"timestamp" : content + }; + callback(@[[NSNull null], result]); + } else { + callback(@[[NSNull null]]); + } +} + +- (void)set_TimestampByKey:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + NSString *key = [input objectForKey:@"key"]; + NSString *timestamp = [input objectForKey:@"timestamp"]; + NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; + NSString *filePath = [url.path stringByAppendingPathComponent:key]; + NSError *error; + BOOL ok = [timestamp writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; + NSDictionary *result; + if (!ok) { + NSLog(@"Error writing file at %@\n%@", filePath, [error localizedFailureReason]); + result = @{ + @"status" : @(false) + }; + } else { + result = @{ + @"status" : @(true) + }; + } + callback(@[[NSNull null], result]); +} + @end diff --git a/RCTAppleHealthKit/RCTAppleHealthKit.m b/RCTAppleHealthKit/RCTAppleHealthKit.m index bff6e781938f2061ede84c23cf3f213b213ae066..5ab849251c62dcf947caf7194b947223ddc066e4 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit.m @@ -206,6 +206,16 @@ RCT_EXPORT_METHOD(resetUserDefaults:(NSDictionary *)input callback:(RCTResponseS [self reset_UserDefaultsByKey:input callback:callback]; } +RCT_EXPORT_METHOD(getLastTimestamp:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self get_TimestampByKey:input callback:callback]; +} + +RCT_EXPORT_METHOD(setTimestamp:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback) +{ + [self set_TimestampByKey:input callback:callback]; +} + - (void)isHealthKitAvailable:(RCTResponseSenderBlock)callback { BOOL isAvailable = NO;