aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer/src/components/StoreProvider.tsx
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-23 15:48:58 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-23 15:48:58 +0100
commitb5d16a8068ed55b784f8e10f19a99cc7f11b8bc7 (patch)
treed819b4bb607f5b046451e15385c16804d5f43fcf /packages/renderer/src/components/StoreProvider.tsx
parentfeat: Main to renderer store synchronization (diff)
downloadsophie-b5d16a8068ed55b784f8e10f19a99cc7f11b8bc7.tar.gz
sophie-b5d16a8068ed55b784f8e10f19a99cc7f11b8bc7.tar.zst
sophie-b5d16a8068ed55b784f8e10f19a99cc7f11b8bc7.zip
feat: Add react and mobx integration
Diffstat (limited to 'packages/renderer/src/components/StoreProvider.tsx')
-rw-r--r--packages/renderer/src/components/StoreProvider.tsx24
1 files changed, 24 insertions, 0 deletions
diff --git a/packages/renderer/src/components/StoreProvider.tsx b/packages/renderer/src/components/StoreProvider.tsx
new file mode 100644
index 0000000..51c39f7
--- /dev/null
+++ b/packages/renderer/src/components/StoreProvider.tsx
@@ -0,0 +1,24 @@
1import React, { createContext, useContext } from 'react';
2
3import type { RootStore } from '../stores/RootStore';
4
5const StoreContext = createContext<RootStore | null>(null);
6
7export function useStore(): RootStore {
8 const store = useContext(StoreContext);
9 if (store === null) {
10 throw new Error('useStore can only be called inside of StoreProvider');
11 }
12 return store;
13}
14
15export function StoreProvider({ children, store }: {
16 children: JSX.Element | JSX.Element[],
17 store: RootStore,
18}): JSX.Element {
19 return (
20 <StoreContext.Provider value={store}>
21 {children}
22 </StoreContext.Provider>
23 );
24}