-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathContractAddressProvider.tsx
More file actions
39 lines (34 loc) · 1.09 KB
/
ContractAddressProvider.tsx
File metadata and controls
39 lines (34 loc) · 1.09 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
import {
Accessor,
createContext,
createEffect,
createResource,
createSignal,
JSX,
onMount,
useContext,
} from "solid-js";
import { ContractResponse } from "@packages/types/contract";
import { Address } from "./SessionProvider/models";
import { api } from "@apps/exchange/src/root";
const ContractAddressContext = createContext<Accessor<Address>>();
export function ContractAddressProvider(props: { children: JSX.Element }) {
const [contractAddress, setContractAddress] = createSignal("0x");
onMount(async () => {
let result = await fetch(`${api}/public/contract`)
.then((r) => r.json())
.then((r) => ContractResponse.parse(r));
setContractAddress(result.contract_address);
if (result && result?.contract_address) {
console.log(`Treasury Contract Address: ${result.contract_address}`);
}
});
return (
<ContractAddressContext.Provider value={contractAddress}>
{props.children}
</ContractAddressContext.Provider>
);
}
export function useContractAddress() {
return useContext<Accessor<Address> | undefined>(ContractAddressContext);
}