
#import "RNNReactRootViewCreator.h"
#import "RNNReactRootView.h"
#import "RNNReactView.h"

@implementation RNNReactRootViewCreator {
	RCTBridge *_bridge;
}

-(instancetype)initWithBridge:(RCTBridge*)bridge {
	self = [super init];
	
	_bridge = bridge;
	
	return self;
	
}

- (UIView*)createRootView:(NSString*)name rootViewId:(NSString*)rootViewId {
	if (!rootViewId) {
		@throw [NSException exceptionWithName:@"MissingViewId" reason:@"Missing view id" userInfo:nil];
	}
	
	UIView *view = [[RNNReactRootView alloc] initWithBridge:_bridge
										 moduleName:name
								  initialProperties:@{@"componentId": rootViewId}];
	return view;
}

- (UIView*)createCustomReactView:(NSString*)name rootViewId:(NSString*)rootViewId {
	if (!rootViewId) {
		@throw [NSException exceptionWithName:@"MissingViewId" reason:@"Missing view id" userInfo:nil];
	}
	
	UIView *view = [[RNNReactView alloc] initWithBridge:_bridge
												 moduleName:name
										  initialProperties:@{@"componentId": rootViewId}];
	return view;
}

-(UIView*)createRootViewFromComponentOptions:(RNNComponentOptions*)componentOptions {
	return [self createCustomReactView:componentOptions.name.get rootViewId:componentOptions.componentId.get];
}

@end
