Skip to content

Commit

Permalink
refactor(app, config): re-factor prefs/json/meta config waterfall to …
Browse files Browse the repository at this point in the history
…shared

This is a pattern I need in a few places and the duplication was my fault
  • Loading branch information
mikehardy committed Aug 17, 2021
1 parent 8851f51 commit 4f63a62
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 78 deletions.
4 changes: 4 additions & 0 deletions packages/app/ios/RNFBApp/RNFBSharedUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
35 changes: 35 additions & 0 deletions packages/app/ios/RNFBApp/RNFBSharedUtils.m
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
*/

#import "RNFBSharedUtils.h"
#import "RNFBJSON.h"
#import "RNFBMeta.h"
#import "RNFBPreferences.h"
#import "RNFBRCTEventEmitter.h"

#pragma mark -
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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<FIRComponent *> *)componentsToRegister {
Expand Down

0 comments on commit 4f63a62

Please sign in to comment.