2
0
mirror of synced 2025-02-17 00:36:31 +00:00

Merge pull request #1295 from invertase/fix-1288

[config][android] Handle remote config error
This commit is contained in:
Michael Diarmid 2018-07-18 21:59:51 +01:00 committed by GitHub
commit ce513f20e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 7 deletions

View File

@ -16,6 +16,7 @@ import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseApp;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig; import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigFetchThrottledException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue; import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings; import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
@ -119,9 +120,13 @@ class RNFirebaseRemoteConfig extends ReactContextBaseJavaModule {
@Override @Override
public void onComplete(@NonNull Task<Void> task) { public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) { if (task.isSuccessful()) {
promise.resolve("remoteConfigFetchStatusSuccess"); promise.resolve(null);
} else { } else {
promise.reject("config/failure", task.getException().getMessage(), task.getException()); if (task.getException() instanceof FirebaseRemoteConfigFetchThrottledException) {
promise.reject("config/throttled", "fetch() operation cannot be completed successfully, due to throttling.", task.getException());
} else {
promise.reject("config/failure", "fetch() operation cannot be completed successfully.", task.getException());
}
} }
} }
}); });
@ -154,7 +159,6 @@ class RNFirebaseRemoteConfig extends ReactContextBaseJavaModule {
map.putNull(NUMBER_VALUE); map.putNull(NUMBER_VALUE);
} }
// TODO check with ios
switch (value.getSource()) { switch (value.getSource()) {
case FirebaseRemoteConfig.VALUE_SOURCE_DEFAULT: case FirebaseRemoteConfig.VALUE_SOURCE_DEFAULT:
map.putString(SOURCE, "default"); map.putString(SOURCE, "default");

View File

@ -19,6 +19,16 @@ NSString *convertFIRRemoteConfigFetchStatusToNSString(FIRRemoteConfigFetchStatus
} }
} }
NSString *convertFIRRemoteConfigFetchStatusToNSStringDescription(FIRRemoteConfigFetchStatus value) {
switch (value) {
case FIRRemoteConfigFetchStatusThrottled:
return @"fetch() operation cannot be completed successfully, due to throttling.";
case FIRRemoteConfigFetchStatusNoFetchYet:
default:
return @"fetch() operation cannot be completed successfully.";
}
}
NSString *convertFIRRemoteConfigSourceToNSString(FIRRemoteConfigSource value) { NSString *convertFIRRemoteConfigSourceToNSString(FIRRemoteConfigSource value) {
switch (value) { switch (value) {
case FIRRemoteConfigSourceDefault: case FIRRemoteConfigSourceDefault:
@ -49,9 +59,9 @@ RCT_EXPORT_METHOD(fetch:
(RCTPromiseRejectBlock) reject) { (RCTPromiseRejectBlock) reject) {
[[FIRRemoteConfig remoteConfig] fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *__nullable error) { [[FIRRemoteConfig remoteConfig] fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *__nullable error) {
if (error) { if (error) {
reject(convertFIRRemoteConfigFetchStatusToNSString(status), error.localizedDescription, error); reject(convertFIRRemoteConfigFetchStatusToNSString(status), convertFIRRemoteConfigFetchStatusToNSStringDescription(status), error);
} else { } else {
resolve(convertFIRRemoteConfigFetchStatusToNSString(status)); resolve(nil);
} }
}]; }];
} }
@ -63,9 +73,9 @@ RCT_EXPORT_METHOD(fetchWithExpirationDuration:
rejecter:(RCTPromiseRejectBlock)reject) { rejecter:(RCTPromiseRejectBlock)reject) {
[[FIRRemoteConfig remoteConfig] fetchWithExpirationDuration:expirationDuration.doubleValue completionHandler:^(FIRRemoteConfigFetchStatus status, NSError *__nullable error) { [[FIRRemoteConfig remoteConfig] fetchWithExpirationDuration:expirationDuration.doubleValue completionHandler:^(FIRRemoteConfigFetchStatus status, NSError *__nullable error) {
if (error) { if (error) {
reject(convertFIRRemoteConfigFetchStatusToNSString(status), error.localizedDescription, error); reject(convertFIRRemoteConfigFetchStatusToNSString(status), convertFIRRemoteConfigFetchStatusToNSStringDescription(status), error);
} else { } else {
resolve(convertFIRRemoteConfigFetchStatusToNSString(status)); resolve(nil);
} }
}]; }];
} }