-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathNewOperation.tsx
80 lines (71 loc) · 2.25 KB
/
NewOperation.tsx
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
import { Stack, StackDivider, Text, VStack } from "@chakra-ui/react";
import { useEffect, useState } from "react";
import { NewDepositForm, NewWithdrawalForm } from "../components";
import { getConnectedAccount, isMetaMaskInstalled } from "../helpers/accounts";
import { checkConnectedChainId } from "../helpers/contract";
type Props = {
isDeposit: Boolean;
};
export const NewOperation = (props: Props) => {
const { isDeposit } = props;
const [isCorrectChainId, setCorrectChainId] = useState(false);
const [connectedAddress, setConnectedAddress] = useState("");
const [memberId, setMemberId] = useState("");
const updateAccount = async () => {
setConnectedAddress(await getConnectedAccount());
};
const updateChain = async () => {
setCorrectChainId(await checkConnectedChainId());
};
if (typeof window !== "undefined" && isMetaMaskInstalled()) {
window.ethereum.on("accountsChanged", async () => {
updateAccount();
});
window.ethereum.on("chainChanged", async () => {
updateChain();
});
}
useEffect(() => {
updateChain();
updateAccount();
}, []);
useEffect(() => {
const updateMemberId = async () => {
if (isCorrectChainId && connectedAddress !== "") {
const res = await fetch(
`/api/members?connectedAddress=${connectedAddress}`
);
const data = await res.json();
console.log("Member by address:", data);
setMemberId(data.id);
console.log(data.id);
} else {
setMemberId("");
}
};
updateMemberId();
}, [isCorrectChainId, connectedAddress]);
return (
<Stack align="center" justify="center">
{!isCorrectChainId ? (
<Text>Please connect to Sepolia to proceed.</Text>
) : connectedAddress === "" ? (
<Text>Please connect account to proceed.</Text>
) : (
<VStack divider={<StackDivider borderColor="gray.200" />} w={"100%"}>
{isDeposit ? (
<NewDepositForm
connectedAddress={connectedAddress}
memberId={memberId}
/>
) : (
<NewWithdrawalForm
connectedAddress={connectedAddress}
memberId={memberId}
/>
)}
</VStack>
)}
</Stack>
);
};