summaryrefslogtreecommitdiffstats
path: root/subprojects/frontend/src/RootStoreProvider.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/frontend/src/RootStoreProvider.tsx')
-rw-r--r--subprojects/frontend/src/RootStoreProvider.tsx29
1 files changed, 29 insertions, 0 deletions
diff --git a/subprojects/frontend/src/RootStoreProvider.tsx b/subprojects/frontend/src/RootStoreProvider.tsx
new file mode 100644
index 00000000..70ac7776
--- /dev/null
+++ b/subprojects/frontend/src/RootStoreProvider.tsx
@@ -0,0 +1,29 @@
1import React, { type ReactNode, createContext, useContext } from 'react';
2
3import type RootStore from './RootStore';
4
5const StoreContext = createContext<RootStore | undefined>(undefined);
6
7export function useRootStore(): RootStore {
8 const rootStore = useContext(StoreContext);
9 if (!rootStore) {
10 throw new Error('useRootStore must be used within RootStoreProvider');
11 }
12 return rootStore;
13}
14
15export default function RootStoreProvider({
16 children,
17 rootStore,
18}: {
19 children?: ReactNode;
20 rootStore: RootStore;
21}): JSX.Element {
22 return (
23 <StoreContext.Provider value={rootStore}>{children}</StoreContext.Provider>
24 );
25}
26
27RootStoreProvider.defaultProps = {
28 children: undefined,
29};