10f064ba0SŁukasz Kosmaty// Copyright 2018-present 650 Industries. All rights reserved.
20f064ba0SŁukasz Kosmaty
30f064ba0SŁukasz Kosmaty#if __has_include(<EXErrorRecovery/EXErrorRecoveryModule.h>)
40f064ba0SŁukasz Kosmaty#import "EXScopedErrorRecoveryModule.h"
50f064ba0SŁukasz Kosmaty
60f064ba0SŁukasz Kosmaty@interface EXScopedErrorRecoveryModule ()
70f064ba0SŁukasz Kosmaty
8*167fd314SWill Schurman@property (nonatomic, strong) NSString *scopeKey;
90f064ba0SŁukasz Kosmaty
100f064ba0SŁukasz Kosmaty@end
110f064ba0SŁukasz Kosmaty
120f064ba0SŁukasz Kosmaty@implementation EXScopedErrorRecoveryModule
130f064ba0SŁukasz Kosmaty
14*167fd314SWill Schurman- (instancetype)initWithScopeKey:(NSString *)scopeKey
150f064ba0SŁukasz Kosmaty{
160f064ba0SŁukasz Kosmaty  if (self = [super init]) {
17*167fd314SWill Schurman    _scopeKey = scopeKey;
180f064ba0SŁukasz Kosmaty  }
190f064ba0SŁukasz Kosmaty  return self;
200f064ba0SŁukasz Kosmaty}
210f064ba0SŁukasz Kosmaty
220f064ba0SŁukasz Kosmaty- (BOOL)setRecoveryProps:(NSString *)props
230f064ba0SŁukasz Kosmaty{
240f064ba0SŁukasz Kosmaty  NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
250f064ba0SŁukasz Kosmaty  NSDictionary *errorRecoveryStore = [preferences dictionaryForKey:[self userDefaultsKey]] ?: @{};
260f064ba0SŁukasz Kosmaty  NSMutableDictionary *newStore = [errorRecoveryStore mutableCopy];
27*167fd314SWill Schurman  newStore[_scopeKey] = props;
280f064ba0SŁukasz Kosmaty  [preferences setObject:newStore forKey:[self userDefaultsKey]];
290f064ba0SŁukasz Kosmaty  return [preferences synchronize];
300f064ba0SŁukasz Kosmaty}
310f064ba0SŁukasz Kosmaty
320f064ba0SŁukasz Kosmaty- (NSString *)consumeRecoveryProps
330f064ba0SŁukasz Kosmaty{
340f064ba0SŁukasz Kosmaty  NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
350f064ba0SŁukasz Kosmaty  NSDictionary *errorRecoveryStore = [preferences dictionaryForKey:[self userDefaultsKey]];
360f064ba0SŁukasz Kosmaty  if (errorRecoveryStore) {
37*167fd314SWill Schurman    NSString *props = errorRecoveryStore[_scopeKey];
380f064ba0SŁukasz Kosmaty    if (props) {
390f064ba0SŁukasz Kosmaty      NSMutableDictionary *storeWithRemovedProps = [errorRecoveryStore mutableCopy];
40*167fd314SWill Schurman      [storeWithRemovedProps removeObjectForKey:_scopeKey];
410f064ba0SŁukasz Kosmaty      [preferences setObject:storeWithRemovedProps forKey:[self userDefaultsKey]];
420f064ba0SŁukasz Kosmaty      [preferences synchronize];
430f064ba0SŁukasz Kosmaty      return props;
440f064ba0SŁukasz Kosmaty    }
450f064ba0SŁukasz Kosmaty  }
460f064ba0SŁukasz Kosmaty  return nil;
470f064ba0SŁukasz Kosmaty}
480f064ba0SŁukasz Kosmaty
490f064ba0SŁukasz Kosmaty@end
500f064ba0SŁukasz Kosmaty#endif
51