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