forked from wix/react-native-navigation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathComponentRegistry.ts
37 lines (35 loc) · 1.23 KB
/
ComponentRegistry.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { ComponentProvider } from 'react-native';
import { Store } from './Store';
import { ComponentEventsObserver } from '../events/ComponentEventsObserver';
import { ComponentWrapper } from './ComponentWrapper';
import { AppRegistryService } from '../adapters/AppRegistryService';
export class ComponentRegistry {
constructor(
private store: Store,
private componentEventsObserver: ComponentEventsObserver,
private componentWrapper: ComponentWrapper,
private appRegistryService: AppRegistryService
) {}
registerComponent(
componentName: string | number,
componentProvider: ComponentProvider,
concreteComponentProvider?: ComponentProvider,
ReduxProvider?: any,
reduxStore?: any
): ComponentProvider {
const NavigationComponent = () => {
return this.componentWrapper.wrap(
componentName.toString(),
componentProvider,
this.store,
this.componentEventsObserver,
concreteComponentProvider,
ReduxProvider,
reduxStore
);
};
this.store.setComponentClassForName(componentName.toString(), NavigationComponent);
this.appRegistryService.registerComponent(componentName.toString(), NavigationComponent);
return NavigationComponent;
}
}