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