1// Copyright 2018-present 650 Industries. All rights reserved. 2 3#import <ABI47_0_0EXErrorRecovery/ABI47_0_0EXErrorRecoveryModule.h> 4 5@implementation ABI47_0_0EXErrorRecoveryModule 6 7ABI47_0_0EX_EXPORT_MODULE(ExpoErrorRecovery); 8 9ABI47_0_0EX_EXPORT_METHOD_AS(saveRecoveryProps, 10 saveRecoveryProps:(NSString *)props 11 resolve:(ABI47_0_0EXPromiseResolveBlock)resolve 12 rejecter:(ABI47_0_0EXPromiseRejectBlock)reject) 13{ 14 if (props) { 15 if (![self setRecoveryProps:props]) { 16 return reject(@"E_ERROR_RECOVERY_SAVE_FAILED", @"Couldn't save props.", nil); 17 } 18 } 19 resolve(nil); 20} 21 22- (NSDictionary *)constantsToExport 23{ 24 return @{ 25 @"recoveredProps": ABI47_0_0EXNullIfNil([self consumeRecoveryProps]) 26 }; 27} 28 29- (BOOL)setRecoveryProps:(NSString *)props 30{ 31 NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults]; 32 [preferences setObject:props forKey:[self userDefaultsKey]]; 33 return [preferences synchronize]; 34} 35 36- (NSString *)consumeRecoveryProps 37{ 38 NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults]; 39 NSString *props = [preferences stringForKey:[self userDefaultsKey]]; 40 if (props) { 41 [preferences removeObjectForKey:[self userDefaultsKey]]; 42 [preferences synchronize]; 43 } 44 return props; 45} 46 47- (NSString *)userDefaultsKey 48{ 49 return NSStringFromClass([self class]); 50} 51 52@end 53