diff --git a/app/javascript/src/pages/Dashboard/Dashboard.tsx b/app/javascript/src/pages/Dashboard/Dashboard.tsx index 084914c..aa76ec8 100644 --- a/app/javascript/src/pages/Dashboard/Dashboard.tsx +++ b/app/javascript/src/pages/Dashboard/Dashboard.tsx @@ -1,12 +1,15 @@ import type { FC } from "react"; import React from "react"; import useSWR from "swr"; -import cx from "classnames"; import { useCurrentUser } from "../../contexts/UserProvider"; -import type { Vault, YieldwatchResponse } from "../../types/yieldwatch"; +import type { + Vault as VaultType, + YieldwatchResponse, +} from "../../types/yieldwatch"; +import { Vault } from "./Vault"; -const exampleVault: Partial = { +const exampleVault: Partial = { chainId: 1, name: "Cake-Cake Staking", depositedTokens: 0, @@ -28,57 +31,7 @@ export const Dashbaord: FC = () => {
{vaults?.map((vault) => ( -
-

- {vault.name} -

-
-

- {!isLoading && - ( - (vault.depositedTokens ?? 0) + (vault.totalRewards ?? 0) - ).toFixed(4)} -

-
-
-
-

Depositado

-
- {!isLoading && vault.depositedTokens?.toFixed(4)} -
-
-
-

Ganho

-
- {!isLoading && vault.totalRewards?.toFixed(4)} -
-
-
-
+ ))}
diff --git a/app/javascript/src/pages/Dashboard/Vault/RemoveStakeModal.tsx b/app/javascript/src/pages/Dashboard/Vault/RemoveStakeModal.tsx new file mode 100644 index 0000000..5bc5b83 --- /dev/null +++ b/app/javascript/src/pages/Dashboard/Vault/RemoveStakeModal.tsx @@ -0,0 +1,94 @@ +import BigNumber from "bignumber.js"; +import type { ChangeEvent, FC } from "react"; +import React, { useState } from "react"; +import cx from "classnames"; + +import { Modal } from "../../../components"; + +const inputBaseStyles = + "rounded-lg border-transparent flex-1 appearance-none border border-gray-300 w-full py-2 px-4 bg-white text-gray-700 placeholder-gray-400 shadow-sm text-base focus:outline-none focus:ring-2 focus:ring-blue-600 focus:border-transparent mb-3"; + +type RemoveStakeModal = { + setIsOpen: React.Dispatch>; + isOpen: boolean; + stakedCake: string; + poolName?: string; +}; + +export const RemoveStakeModal: FC = ({ + setIsOpen, + isOpen, + // stakedCake, + poolName, +}) => { + const [amountInput, setAmountInput] = useState("0"); + const stakedCake = "44.00"; + const avaliableCake = new BigNumber(stakedCake); + + const handleClose = () => { + setIsOpen(false); + }; + + const onSubmit = () => {}; + + const handleInvestInput = ({ + currentTarget: { value }, + }: ChangeEvent) => { + const newInvestAmount = new BigNumber(value); + + if ( + newInvestAmount.isLessThanOrEqualTo(avaliableCake) && + newInvestAmount.isGreaterThanOrEqualTo(0) + ) { + setAmountInput(value); + } + }; + + const handleMaxButton = () => { + setAmountInput(stakedCake); + }; + + const amountToUnstake = new BigNumber(amountInput); + + const stakeAvaliable = + amountToUnstake.isGreaterThan(0) && + amountToUnstake.isLessThanOrEqualTo(avaliableCake); + + return ( + + CAKE disponível: {stakedCake} +
+
+ + +
+ {avaliableCake.isEqualTo(0) && ( + Você não possuí saldo. + )} + +
+
+ ); +}; diff --git a/app/javascript/src/pages/Dashboard/Vault/Vault.tsx b/app/javascript/src/pages/Dashboard/Vault/Vault.tsx new file mode 100644 index 0000000..ecd36a0 --- /dev/null +++ b/app/javascript/src/pages/Dashboard/Vault/Vault.tsx @@ -0,0 +1,90 @@ +import type { FC } from "react"; +import React, { useState } from "react"; +import cx from "classnames"; +import { XCircleIcon } from "@heroicons/react/outline"; + +import type { Vault as VaultType } from "../../../types/yieldwatch"; +import { RemoveStakeModal } from "./RemoveStakeModal"; + +type VaultProps = { + vault: Partial; + isLoading: boolean; +}; + +export const Vault: FC = ({ vault, isLoading }) => { + const [removeStakeModalIsOpen, setRemoveStakeModalIsOpen] = + useState(false); + + const totalDepositedAndRewarded = ( + (vault.depositedTokens ?? 0) + (vault.totalRewards ?? 0) + ).toFixed(4); + + const totalDeposited = vault.depositedTokens?.toFixed(4); + const totalRewarded = vault.totalRewards?.toFixed(4); + + const handleRemoveStakeModal = () => { + setRemoveStakeModalIsOpen(true); + }; + + return ( + <> + +
+
+

+ {vault.name} +

+ + +
+
+

+ {!isLoading && totalDepositedAndRewarded} +

+
+
+
+

Depositado

+
+ {!isLoading && totalDeposited} +
+
+
+

Ganho

+
+ {!isLoading && totalRewarded} +
+
+
+
+ + ); +}; diff --git a/app/javascript/src/pages/Dashboard/Vault/index.ts b/app/javascript/src/pages/Dashboard/Vault/index.ts new file mode 100644 index 0000000..1ad773a --- /dev/null +++ b/app/javascript/src/pages/Dashboard/Vault/index.ts @@ -0,0 +1 @@ +export * from "./Vault";