diff --git a/React/Base/RCTBundleURLProvider.h b/React/Base/RCTBundleURLProvider.h index 75be4f732e8280..e4b5e198b3d7c4 100644 --- a/React/Base/RCTBundleURLProvider.h +++ b/React/Base/RCTBundleURLProvider.h @@ -31,6 +31,13 @@ extern const NSUInteger kRCTBundleURLProviderDefaultPort; */ - (void)resetToDefaults; +/** + * Returns the jsBundleURL for a given bundle entrypoint and + * the fallback offline JS bundle if the packager is not running. + */ +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + fallbackURLProvider:(NSURL *(^)(void))fallbackURLProvider; + /** * Returns the jsBundleURL for a given bundle entrypoint and * the fallback offline JS bundle if the packager is not running. diff --git a/React/Base/RCTBundleURLProvider.m b/React/Base/RCTBundleURLProvider.m index 558e2da21e3b36..0f1a236e0f1981 100644 --- a/React/Base/RCTBundleURLProvider.m +++ b/React/Base/RCTBundleURLProvider.m @@ -130,11 +130,11 @@ - (NSString *)packagerServerHost return nil; } -- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackResource:(NSString *)resourceName fallbackExtension:(NSString *)extension +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackURLProvider:(NSURL *(^)(void))fallbackURLProvider { NSString *packagerServerHost = [self packagerServerHost]; if (!packagerServerHost) { - return [self jsBundleURLForFallbackResource:resourceName fallbackExtension:extension]; + return fallbackURLProvider(); } else { return [RCTBundleURLProvider jsBundleURLForBundleRoot:bundleRoot packagerHost:packagerServerHost @@ -143,6 +143,14 @@ - (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackResource:(NSS } } +- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot + fallbackResource:(NSString *)resourceName fallbackExtension:(NSString *)extension +{ + return [self jsBundleURLForBundleRoot:bundleRoot fallbackURLProvider:^NSURL*{ + return [self jsBundleURLForFallbackResource:resourceName fallbackExtension:extension]; + }]; +} + - (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackResource:(NSString *)resourceName { return [self jsBundleURLForBundleRoot:bundleRoot fallbackResource:resourceName fallbackExtension:nil];