ghost-dao-interface/src/containers/Stake/Stake.jsx
Uncle Fatso 4b1c91b144
optimize token names during stake, wrap and unwrap
Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
2025-08-11 20:34:00 +03:00

97 lines
3.5 KiB
JavaScript

import "./Stake.scss";
import { Box, Typography } from "@mui/material";
import SettingsIcon from '@mui/icons-material/Settings';
import { memo, useState, useEffect } from "react";
import { useChainId } from "wagmi";
import { useSearchParams } from "react-router-dom";
import { StakeArea } from "./components/StakeArea";
import GhostStyledIcon from "../../components/Icon/GhostIcon";
import Modal from "../../components/Modal/Modal";
import Paper from "../../components/Paper/Paper";
import TokenStack from "../../components/TokenStack/TokenStack";
import { useTokenSymbol } from "../../hooks/tokens";
const Stake = ({ chainId, address, isOpened, closeModal, connect }) => {
const [action, setAction] = useState("STAKE");
const [settingsModalOpen, setSettingsModalOpen] = useState(false);
const { symbol: ftsoSymbol } = useTokenSymbol(chainId, "FTSO");
const { symbol: stnkSymbol } = useTokenSymbol(chainId, "STNK");
const { symbol: ghstSymbol } = useTokenSymbol(chainId, "GHST");
const [upperToken, setUpperToken] = useState(ftsoSymbol);
const [bottomToken, setBottomToken] = useState(ghstSymbol);
const setSettingsModalOpenInner = (value) => {
setSettingsModalOpen(value);
}
useEffect(() => {
switch (true) {
case (upperToken === ftsoSymbol && bottomToken === stnkSymbol):
setAction("STAKE")
break;
case (upperToken === ftsoSymbol && bottomToken === ghstSymbol):
setAction("STAKE")
break;
case (upperToken === stnkSymbol && bottomToken === ftsoSymbol):
setAction("UNSTAKE")
break;
case (upperToken === ghstSymbol && bottomToken === ftsoSymbol):
setAction("UNSTAKE")
break;
case (upperToken === stnkSymbol && bottomToken === ghstSymbol):
setAction("WRAP")
break;
case (upperToken === ghstSymbol && bottomToken === stnkSymbol):
setAction("UNWRAP")
break;
default:
setAction("STAKE")
}
}, [upperToken, bottomToken])
return (
<Modal
headerContent={
<Box display="flex" justifyContent="center" alignItems="center" gap="15px">
<Typography variant="h4">{action}</Typography>
<TokenStack tokens={[upperToken, bottomToken]} />
</Box>
}
topLeft={
<GhostStyledIcon
viewBox="0 0 23 23"
component={SettingsIcon}
style={{ cursor: "pointer" }}
onClick={() => setSettingsModalOpenInner(true)}
/>
}
open={isOpened}
onClose={closeModal}
maxWidth="460px"
minHeight="200px"
>
<Box display="flex" alignItems="center" justifyContent="center" flexDirection="column">
<StakeArea
settingsModalOpen={settingsModalOpen}
closeSettingModal={() => setSettingsModalOpenInner(false)}
upperToken={upperToken}
setUpperToken={setUpperToken}
bottomToken={bottomToken}
setBottomToken={setBottomToken}
action={action}
chainId={chainId}
address={address}
connect={connect}
/>
</Box>
</Modal>
);
};
export default memo(Stake);