From 4f63a62b8b4a8f3bb22ec925d117421faa49571f Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Mon, 16 Aug 2021 15:55:05 -0500 Subject: [PATCH] refactor(app, config): re-factor prefs/json/meta config waterfall to shared This is a pattern I need in a few places and the duplication was my fault --- packages/app/ios/RNFBApp/RNFBSharedUtils.h | 4 + packages/app/ios/RNFBApp/RNFBSharedUtils.m | 35 +++++++ .../RNFBCrashlyticsInitProvider.m | 95 ++++--------------- 3 files changed, 56 insertions(+), 78 deletions(-) diff --git a/packages/app/ios/RNFBApp/RNFBSharedUtils.h b/packages/app/ios/RNFBApp/RNFBSharedUtils.h index 91d02e5626..7343c2814f 100644 --- a/packages/app/ios/RNFBApp/RNFBSharedUtils.h +++ b/packages/app/ios/RNFBApp/RNFBSharedUtils.h @@ -56,6 +56,10 @@ extern NSString *const DEFAULT_APP_NAME; + (NSString *)getISO8601String:(NSDate *)date; ++ (BOOL)configContains:(NSString *)key; + ++ (BOOL)getConfigBooleanValue:(NSString *)tag key:(NSString *)key defaultValue:(BOOL)defaultValue; + @end #endif diff --git a/packages/app/ios/RNFBApp/RNFBSharedUtils.m b/packages/app/ios/RNFBApp/RNFBSharedUtils.m index 631b431ce3..92e404b375 100644 --- a/packages/app/ios/RNFBApp/RNFBSharedUtils.m +++ b/packages/app/ios/RNFBApp/RNFBSharedUtils.m @@ -16,6 +16,9 @@ */ #import "RNFBSharedUtils.h" +#import "RNFBJSON.h" +#import "RNFBMeta.h" +#import "RNFBPreferences.h" #import "RNFBRCTEventEmitter.h" #pragma mark - @@ -127,4 +130,36 @@ + (NSString *)getISO8601String:(NSDate *)date { return [iso8601String stringByAppendingString:@"Z"]; } ++ (BOOL)configContains:(NSString *)key { + return [[RNFBPreferences shared] contains:key] || [[RNFBJSON shared] contains:key] || + [RNFBMeta contains:key]; +} + ++ (BOOL)getConfigBooleanValue:(NSString *)tag key:(NSString *)key defaultValue:(BOOL)defaultValue { + BOOL enabled; + + if ([[RNFBPreferences shared] contains:key]) { + enabled = [[RNFBPreferences shared] getBooleanValue:key defaultValue:defaultValue]; + DLog(@"%@ %@ via " + @"RNFBPreferences: %d", + tag, key, enabled); + } else if ([[RNFBJSON shared] contains:key]) { + enabled = [[RNFBJSON shared] getBooleanValue:key defaultValue:defaultValue]; + DLog(@"%@ %@ via " + @"RNFBJSON: %d", + tag, key, enabled); + } else { + // Note that if we're here, and the key is not set on the app's bundle, our final default is the + // one passed in + enabled = [RNFBMeta getBooleanValue:key defaultValue:defaultValue]; + DLog(@"%@ %@ via " + @"RNFBMeta: %d", + tag, key, enabled); + } + + DLog(@"%@ %@ final value: %d", tag, key, enabled); + + return enabled; +} + @end diff --git a/packages/crashlytics/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.m b/packages/crashlytics/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.m index fe105ee69f..a037b03007 100644 --- a/packages/crashlytics/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.m +++ b/packages/crashlytics/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.m @@ -40,94 +40,33 @@ + (void)load { } + (BOOL)isCrashlyticsCollectionEnabled { - BOOL enabled; - - if ([[RNFBPreferences shared] contains:KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED]) { - enabled = [[RNFBPreferences shared] getBooleanValue:KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED - defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isCrashlyticsCollectionEnabled via RNFBPreferences: %d", enabled); - } else if ([[RNFBJSON shared] contains:KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED]) { - enabled = [[RNFBJSON shared] getBooleanValue:KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED - defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isCrashlyticsCollectionEnabled via RNFBJSON: %d", enabled); - } else { - // Note that if we're here, and the key is not set on the app's bundle, we default to "YES" - enabled = [RNFBMeta getBooleanValue:KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isCrashlyticsCollectionEnabled via RNFBMeta: %d", enabled); - } - #ifdef DEBUG - if (![[RNFBJSON shared] getBooleanValue:KEY_CRASHLYTICS_DEBUG_ENABLED defaultValue:NO]) { - enabled = NO; + if (![RNFBSharedUtils getConfigBooleanValue:@"RNFBCrashlyticsInit" + key:KEY_CRASHLYTICS_DEBUG_ENABLED + defaultValue:NO]) { + DLog(@"RNFBCrashlyticsInit isCrashlyticsCollectionEnabled after checking %@: %d", + KEY_CRASHLYTICS_DEBUG_ENABLED, FALSE); + return FALSE; } - DLog(@"RNFBCrashlyticsInit isCrashlyticsCollectionEnabled after checking RNFBJSON %@: %d", - KEY_CRASHLYTICS_DEBUG_ENABLED, enabled); #endif - DLog(@"RNFBCrashlyticsInit isCrashlyticsCollectionEnabled final value: %d", enabled); - - return enabled; + return [RNFBSharedUtils getConfigBooleanValue:@"RNFBCrashlyticsInit" + key:KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED + defaultValue:YES]; } + (BOOL)isErrorGenerationOnJSCrashEnabled { - BOOL enabled; - - if ([[RNFBPreferences shared] contains:KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED]) { - enabled = [[RNFBPreferences shared] - getBooleanValue:KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED - defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isErrorGenerationOnJSCrashEnabled via RNFBPreferences: %d", enabled); - } else if ([[RNFBJSON shared] contains:KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED]) { - enabled = - [[RNFBJSON shared] getBooleanValue:KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED - defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isErrorGenerationOnJSCrashEnabled via RNFBJSON: %d", enabled); - } else { - // Note that if we're here, and the key is not set on the app's bundle, we default to "YES" - enabled = [RNFBMeta getBooleanValue:KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED - defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isErrorGenerationOnJSCrashEnabled via RNFBMeta: %d", enabled); - } - - DLog(@"RNFBCrashlyticsInit isErrorGenerationOnJSCrashEnabled final value: %d", enabled); - - return enabled; + return + [RNFBSharedUtils getConfigBooleanValue:@"RNFBCrashlyticsInit" + key:KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED + defaultValue:YES]; } + (BOOL)isCrashlyticsJavascriptExceptionHandlerChainingEnabled { - BOOL enabled; - - if ([[RNFBPreferences shared] - contains:KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED]) { - enabled = [[RNFBPreferences shared] - getBooleanValue:KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED - defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isCrashlyticsJavascriptExceptionHandlerChainingEnabled via " - @"RNFBPreferences: %d", - enabled); - } else if ([[RNFBJSON shared] - contains:KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED]) { - enabled = [[RNFBJSON shared] - getBooleanValue:KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED - defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isCrashlyticsJavascriptExceptionHandlerChainingEnabled via " - @"RNFBJSON: %d", - enabled); - } else { - // Note that if we're here, and the key is not set on the app's bundle, we default to "YES" - enabled = - [RNFBMeta getBooleanValue:KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED - defaultValue:YES]; - DLog(@"RNFBCrashlyticsInit isCrashlyticsJavascriptExceptionHandlerChainingEnabled via " - @"RNFBMeta: %d", - enabled); - } - - DLog( - @"RNFBCrashlyticsInit isCrashlyticsJavascriptExceptionHandlerChainingEnabled final value: %d", - enabled); - - return enabled; + return [RNFBSharedUtils + getConfigBooleanValue:@"RNFBCrashlyticsInit" + key:KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED + defaultValue:YES]; } + (NSArray *)componentsToRegister {