From bbb344be7236c29d88760335f3046272d9e0c294 Mon Sep 17 00:00:00 2001 From: Jannis Mattheis Date: Sun, 21 Oct 2018 15:45:10 +0200 Subject: [PATCH] Add inject utils --- ui/src/inject.tsx | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 ui/src/inject.tsx diff --git a/ui/src/inject.tsx b/ui/src/inject.tsx new file mode 100644 index 0000000..64ac887 --- /dev/null +++ b/ui/src/inject.tsx @@ -0,0 +1,34 @@ +import * as React from 'react'; +import {UserStore} from './stores/UserStore'; +import {SnackManager} from './stores/SnackManager'; +import {MessagesStore} from './stores/MessagesStore'; +import {CurrentUser} from './stores/CurrentUser'; +import {ClientStore} from './stores/ClientStore'; +import {AppStore} from './stores/AppStore'; +import {inject as mobxInject, Provider} from 'mobx-react'; +import {WebSocketStore} from './stores/WebSocketStore'; + +export interface StoreMapping { + userStore: UserStore; + snackManager: SnackManager; + messagesStore: MessagesStore; + currentUser: CurrentUser; + clientStore: ClientStore; + appStore: AppStore; + wsStore: WebSocketStore; +} + +export type AllStores = Extract; +export type Stores = Pick; + +export const inject = (...stores: I[]) => { + return

( + node: React.ComponentType

+ ): React.ComponentType>> => { + return mobxInject(...stores)(node); + }; +}; + +export const InjectProvider: React.SFC<{stores: StoreMapping}> = ({children, stores}) => { + return {children}; +};