123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
-
- #import "RNNReactRootViewCreator.h"
- #import "RNNReactView.h"
- #import "RNNComponentRootView.h"
-
- @implementation RNNReactRootViewCreator {
- RCTBridge *_bridge;
- RNNEventEmitter* _eventEmitter;
- }
-
- - (instancetype)initWithBridge:(RCTBridge*)bridge eventEmitter:(RNNEventEmitter*)eventEmitter {
- self = [super init];
- _bridge = bridge;
- _eventEmitter = eventEmitter;
- return self;
- }
-
- - (RNNReactView*)createRootView:(NSString*)name rootViewId:(NSString*)rootViewId ofType:(RNNComponentType)componentType reactViewReadyBlock:(RNNReactViewReadyCompletionBlock)reactViewReadyBlock {
- [self verifyRootViewId:rootViewId];
- return [[[self resolveComponentViewClass:componentType] alloc] initWithBridge:_bridge
- moduleName:name
- initialProperties:@{@"componentId": rootViewId}
- eventEmitter:_eventEmitter
- reactViewReadyBlock:reactViewReadyBlock];
- }
-
- - (Class)resolveComponentViewClass:(RNNComponentType)componentType {
- switch (componentType) {
- case RNNComponentTypeTopBarTitle:
- return RNNReactTitleView.class;
- case RNNComponentTypeTopBarButton:
- return RNNReactButtonView.class;
- case RNNComponentTypeTopBarBackground:
- return RNNReactBackgroundView.class;
- case RNNComponentTypeComponent:
- default:
- return RNNComponentRootView.class;
- }
- }
-
- - (void)verifyRootViewId:(NSString *)rootViewId {
- if (!rootViewId) {
- @throw [NSException exceptionWithName:@"MissingViewId" reason:@"Missing view id" userInfo:nil];
- }
- }
-
- @end
|