mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee32c17d6c |
@@ -613,7 +613,7 @@ function generateCustomURLHandlers(libraries, outputDir) {
|
||||
)
|
||||
.filter(Boolean)
|
||||
.map(className => `@"${className}"`)
|
||||
.join(',\n\t\t');
|
||||
.join(',\n\t\t\t');
|
||||
|
||||
const customImageDataDecoderClasses = libraries
|
||||
.flatMap(
|
||||
@@ -622,7 +622,7 @@ function generateCustomURLHandlers(libraries, outputDir) {
|
||||
)
|
||||
.filter(Boolean)
|
||||
.map(className => `@"${className}"`)
|
||||
.join(',\n\t\t');
|
||||
.join(',\n\t\t\t');
|
||||
|
||||
const customURLHandlerClasses = libraries
|
||||
.flatMap(
|
||||
@@ -631,7 +631,7 @@ function generateCustomURLHandlers(libraries, outputDir) {
|
||||
)
|
||||
.filter(Boolean)
|
||||
.map(className => `@"${className}"`)
|
||||
.join(',\n\t\t');
|
||||
.join(',\n\t\t\t');
|
||||
|
||||
const template = fs.readFileSync(MODULES_PROTOCOLS_MM_TEMPLATE_PATH, 'utf8');
|
||||
const finalMMFile = template
|
||||
@@ -736,7 +736,7 @@ function generateRCTModuleProviders(
|
||||
.flatMap(library => {
|
||||
const modules = modulesInLibraries[library];
|
||||
return modules.map(({moduleName, className}) => {
|
||||
return `\t\t@"${moduleName}": @"${className}", // ${library}`;
|
||||
return `\t\t\t@"${moduleName}": @"${className}", // ${library}`;
|
||||
});
|
||||
})
|
||||
.join('\n');
|
||||
@@ -805,7 +805,7 @@ function generateRCTThirdPartyComponents(libraries, outputDir) {
|
||||
.flatMap(library => {
|
||||
const components = componentsInLibraries[library];
|
||||
return components.map(({componentName, className}) => {
|
||||
return `\t\t@"${componentName}": NSClassFromString(@"${className}"), // ${library}`;
|
||||
return `\t\t\t@"${componentName}": NSClassFromString(@"${className}"), // ${library}`;
|
||||
});
|
||||
})
|
||||
.join('\n');
|
||||
|
||||
+6
-36
@@ -10,56 +10,26 @@
|
||||
#import <ReactCodegen/RCTThirdPartyComponentsProvider.h>
|
||||
#import <ReactCodegen/RCTModuleProviders.h>
|
||||
|
||||
@implementation RCTAppDependencyProvider {
|
||||
NSArray<NSString *> * _URLRequestHandlerClassNames;
|
||||
NSArray<NSString *> * _imageDataDecoderClassNames;
|
||||
NSArray<NSString *> * _imageURLLoaderClassNames;
|
||||
NSDictionary<NSString *,Class<RCTComponentViewProtocol>> * _thirdPartyFabricComponents;
|
||||
NSDictionary<NSString *, id<RCTModuleProvider>> * _moduleProviders;
|
||||
}
|
||||
@implementation RCTAppDependencyProvider
|
||||
|
||||
- (nonnull NSArray<NSString *> *)URLRequestHandlerClassNames {
|
||||
static dispatch_once_t requestUrlToken;
|
||||
dispatch_once(&requestUrlToken, ^{
|
||||
self->_URLRequestHandlerClassNames = RCTModulesConformingToProtocolsProvider.URLRequestHandlerClassNames;
|
||||
});
|
||||
|
||||
return _URLRequestHandlerClassNames;
|
||||
return RCTModulesConformingToProtocolsProvider.URLRequestHandlerClassNames;
|
||||
}
|
||||
|
||||
- (nonnull NSArray<NSString *> *)imageDataDecoderClassNames {
|
||||
static dispatch_once_t dataDecoderToken;
|
||||
dispatch_once(&dataDecoderToken, ^{
|
||||
_imageDataDecoderClassNames = RCTModulesConformingToProtocolsProvider.imageDataDecoderClassNames;
|
||||
});
|
||||
|
||||
return _imageDataDecoderClassNames;
|
||||
return RCTModulesConformingToProtocolsProvider.imageDataDecoderClassNames;
|
||||
}
|
||||
|
||||
- (nonnull NSArray<NSString *> *)imageURLLoaderClassNames {
|
||||
static dispatch_once_t urlLoaderToken;
|
||||
dispatch_once(&urlLoaderToken, ^{
|
||||
_imageURLLoaderClassNames = RCTModulesConformingToProtocolsProvider.imageURLLoaderClassNames;
|
||||
});
|
||||
|
||||
return _imageURLLoaderClassNames;
|
||||
return RCTModulesConformingToProtocolsProvider.imageURLLoaderClassNames;
|
||||
}
|
||||
|
||||
- (nonnull NSDictionary<NSString *,Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents {
|
||||
static dispatch_once_t nativeComponentsToken;
|
||||
dispatch_once(&nativeComponentsToken, ^{
|
||||
_thirdPartyFabricComponents = RCTThirdPartyComponentsProvider.thirdPartyFabricComponents;
|
||||
});
|
||||
|
||||
return _thirdPartyFabricComponents;
|
||||
return RCTThirdPartyComponentsProvider.thirdPartyFabricComponents;
|
||||
}
|
||||
|
||||
- (nonnull NSDictionary<NSString *, id<RCTModuleProvider>> *)moduleProviders {
|
||||
static dispatch_once_t modulesToken;
|
||||
dispatch_once(&modulesToken, ^{
|
||||
_moduleProviders = RCTModuleProviders.moduleProviders;
|
||||
});
|
||||
return _moduleProviders;
|
||||
return RCTModuleProviders.moduleProviders;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -15,30 +15,37 @@
|
||||
|
||||
+ (NSDictionary<NSString *, id<RCTModuleProvider>> *)moduleProviders
|
||||
{
|
||||
NSDictionary<NSString *, NSString *> * moduleMapping = @{
|
||||
{moduleMapping}
|
||||
};
|
||||
static NSDictionary<NSString *, id<RCTModuleProvider>> *providers = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
|
||||
NSMutableDictionary *dict = [NSMutableDictionary new];
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSDictionary<NSString *, NSString *> * moduleMapping = @{
|
||||
{moduleMapping}
|
||||
};
|
||||
|
||||
for (NSString *key in moduleMapping) {
|
||||
NSString * moduleProviderName = moduleMapping[key];
|
||||
Class klass = NSClassFromString(moduleProviderName);
|
||||
if (!klass) {
|
||||
RCTLogError(@"Module provider %@ cannot be found in the runtime", moduleProviderName);
|
||||
continue;
|
||||
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:moduleMapping.count];
|
||||
|
||||
for (NSString *key in moduleMapping) {
|
||||
NSString * moduleProviderName = moduleMapping[key];
|
||||
Class klass = NSClassFromString(moduleProviderName);
|
||||
if (!klass) {
|
||||
RCTLogError(@"Module provider %@ cannot be found in the runtime", moduleProviderName);
|
||||
continue;
|
||||
}
|
||||
|
||||
id instance = [klass new];
|
||||
if (![instance respondsToSelector:@selector(getTurboModule:)]) {
|
||||
RCTLogError(@"Module provider %@ does not conform to RCTModuleProvider", moduleProviderName);
|
||||
continue;
|
||||
}
|
||||
|
||||
[dict setObject:instance forKey:key];
|
||||
}
|
||||
|
||||
id instance = [klass new];
|
||||
if (![instance respondsToSelector:@selector(getTurboModule:)]) {
|
||||
RCTLogError(@"Module provider %@ does not conform to RCTModuleProvider", moduleProviderName);
|
||||
continue;
|
||||
}
|
||||
providers = dict;
|
||||
});
|
||||
|
||||
[dict setObject:instance forKey:key];
|
||||
}
|
||||
|
||||
return dict;
|
||||
return providers;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
+30
-9
@@ -11,23 +11,44 @@
|
||||
|
||||
+(NSArray<NSString *> *)imageURLLoaderClassNames
|
||||
{
|
||||
return @[
|
||||
{imageURLLoaderClassNames}
|
||||
];
|
||||
static NSArray<NSString *> *classNames = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
|
||||
dispatch_once(&onceToken, ^{
|
||||
classNames = @[
|
||||
{imageURLLoaderClassNames}
|
||||
];
|
||||
});
|
||||
|
||||
return classNames;
|
||||
}
|
||||
|
||||
+(NSArray<NSString *> *)imageDataDecoderClassNames
|
||||
{
|
||||
return @[
|
||||
{imageDataDecoderClassNames}
|
||||
];
|
||||
static NSArray<NSString *> *classNames = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
|
||||
dispatch_once(&onceToken, ^{
|
||||
classNames = @[
|
||||
{imageDataDecoderClassNames}
|
||||
];
|
||||
});
|
||||
|
||||
return classNames;
|
||||
}
|
||||
|
||||
+(NSArray<NSString *> *)URLRequestHandlerClassNames
|
||||
{
|
||||
return @[
|
||||
{requestHandlersClassNames}
|
||||
];
|
||||
static NSArray<NSString *> *classNames = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
|
||||
dispatch_once(&onceToken, ^{
|
||||
classNames = @[
|
||||
{requestHandlersClassNames}
|
||||
];
|
||||
});
|
||||
|
||||
return classNames;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
+9
-2
@@ -15,9 +15,16 @@
|
||||
|
||||
+ (NSDictionary<NSString *, Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents
|
||||
{
|
||||
return @{
|
||||
static NSDictionary<NSString *, Class<RCTComponentViewProtocol>> *thirdPartyComponents = nil;
|
||||
static dispatch_once_t nativeComponentsToken;
|
||||
|
||||
dispatch_once(&nativeComponentsToken, ^{
|
||||
thirdPartyComponents = @{
|
||||
{thirdPartyComponentsMapping}
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
return thirdPartyComponents;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user