-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathcontext.tsx
More file actions
88 lines (87 loc) · 2.11 KB
/
context.tsx
File metadata and controls
88 lines (87 loc) · 2.11 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import React, {
PropsWithChildren,
useContext,
useState,
useReducer,
useEffect,
// DispatchWithoutAction,
} from "react";
import reducer, { initialState } from "./reducer";
import { data } from "./pages";
export type meta = {
id: number;
img: string;
price: number;
time_in_secs: number;
desc: string | undefined;
owner: string;
previous_prices: number[];
contractInfo?: any;
};
const AppContext = React.createContext(
{} as {
dispatch: React.Dispatch<{
type: "SET_FALLBACK";
payload: "myalgo" | "pera";
}>;
state: any;
showModal: boolean;
setShowModal: React.Dispatch<React.SetStateAction<boolean>>;
setState: React.Dispatch<React.SetStateAction<{}>>;
wallet: any;
setWallet: React.Dispatch<React.SetStateAction<{}>>;
appState: {
fallback: null | "myalgo" | "pera";
};
modalMessage: any;
setModalMessage: React.Dispatch<any>;
metadata: meta;
setMetadata: React.Dispatch<React.SetStateAction<meta>>;
setData: React.Dispatch<React.SetStateAction<data>>;
data: data;
}
);
export const AppProvider = ({ children }: PropsWithChildren) => {
const [appState, dispatch] = useReducer(reducer, initialState);
const [state, setState] = useState({});
const [wallet, setWallet] = useState({});
const [showModal, setShowModal] = useState(false);
const [data, setData] = useState({} as data);
const [modalMessage, setModalMessage] = useState("Hello" as any);
const [metadata, setMetadata] = useState({
id: 0,
img: "",
price: 0,
time_in_secs: 0,
desc: "",
owner: "",
previous_prices: [],
});
useEffect(() => {
console.log(state);
}, [state]);
return (
<AppContext.Provider
value={{
dispatch,
state,
setState,
appState,
wallet,
setWallet,
modalMessage,
setModalMessage,
showModal,
setShowModal,
metadata,
data,
setData,
// @ts-ignore
setMetadata,
}}
>
{children}
</AppContext.Provider>
);
};
export const useGlobalContext = () => useContext(AppContext);