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 React from "react";
|
| type Store = {
| project: unknown;
| };
| type Context = {
| store: Store;
| update: (data: Partial<Store>) => void;
| };
|
| const AppStoreContext = React.createContext<Context>({} as Context);
| AppStoreContext.displayName = "AppStoreContext";
|
| export const AppStoreProvider: React.FunctionComponent = ({ children }) => {
| const [store, setStore] = React.useState({} as Store);
|
| const update = React.useCallback(
| (newData: Partial<Store>) => {
| setStore({ ...store, ...(newData ?? {}) });
| },
| [store],
| );
|
| const contextValue = React.useMemo(
| () => ({
| store,
| update,
| }),
| [store, update],
| );
|
| return <AppStoreContext.Provider value={contextValue}>{children}</AppStoreContext.Provider>;
| };
|
| export const useAppStore = () => {
| return React.useContext(AppStoreContext);
| };
|
|