From a977b0b350eb152049fd5ba3188d2a1281144cee Mon Sep 17 00:00:00 2001 From: chrisjgf Date: Fri, 23 Apr 2021 08:51:23 +0100 Subject: [PATCH 1/2] Fix bug --- src/components/pages/Pools/FeederPoolProvider.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/pages/Pools/FeederPoolProvider.tsx b/src/components/pages/Pools/FeederPoolProvider.tsx index be0a3c40f..6f153d33b 100644 --- a/src/components/pages/Pools/FeederPoolProvider.tsx +++ b/src/components/pages/Pools/FeederPoolProvider.tsx @@ -102,6 +102,7 @@ export const useFPVaultAddressOptions = (): AddressOption[] => { label: `Pool`, custom: true, symbol: token.symbol, + balance: token?.balance, tip: `${token.symbol} Pool`, }, ], From 1726eda45dcfc044c34b6675d7f3d5a6c88a0876 Mon Sep 17 00:00:00 2001 From: chrisjgf Date: Fri, 23 Apr 2021 08:51:29 +0100 Subject: [PATCH 2/2] Add masset value --- .../pages/Pools/Detail/PoolOverview.tsx | 91 ++++++++++++++++++- src/components/pages/Save/v2/SaveOverview.tsx | 73 +++++++++++++-- 2 files changed, 151 insertions(+), 13 deletions(-) diff --git a/src/components/pages/Pools/Detail/PoolOverview.tsx b/src/components/pages/Pools/Detail/PoolOverview.tsx index 1a5117ca7..b5b616598 100644 --- a/src/components/pages/Pools/Detail/PoolOverview.tsx +++ b/src/components/pages/Pools/Detail/PoolOverview.tsx @@ -1,4 +1,5 @@ import React, { FC, ReactElement, useCallback, useMemo, useState } from 'react'; +import styled from 'styled-components'; import { useFeederPoolApy } from '../../../../hooks/useFeederPoolApy'; import { useSelectedMassetPrice } from '../../../../hooks/usePrice'; @@ -21,6 +22,13 @@ import { CardContainer as Container, CardButton as Button, } from '../../../core/TransitionCard'; +import { useMinimumOutput } from '../../../../hooks/useOutput'; +import { BigDecimal } from '../../../../web3/BigDecimal'; +import { useEstimatedOutput } from '../../../../hooks/useEstimatedOutput'; +import { BigDecimalInputValue } from '../../../../hooks/useBigDecimalInputs'; +import { UnstyledButton } from '../../../core/Button'; +import { useToggle } from 'react-use'; +import { ThemedSkeleton } from '../../../core/ThemedSkeleton'; enum Selection { Stake = 'stake', @@ -30,6 +38,30 @@ enum Selection { const { Stake, Boost, Rewards } = Selection; +const SwitchButton = styled(UnstyledButton)` + position: absolute; + display: block; + border: 1px solid ${({ theme }) => theme.color.defaultBorder}; + color: ${({ theme }) => theme.color.body}; + border-radius: 1rem; + right: -2.5rem; + height: 1.75rem; + width: 1.75rem; + transition: 0.25s; + + :hover { + background: ${({ theme }) => theme.color.gold}; + color: ${({ theme }) => theme.color.white}; + } +`; + +const BalanceContainer = styled.div` + position: relative; + display: flex; + align-items: center; + justify-content: center; +`; + const UserVaultBoost: FC = () => { const feederPool = useSelectedFeederPoolState(); const apy = useFeederPoolApy(feederPool.address); @@ -68,8 +100,13 @@ export const PoolOverview: FC = () => { const feederPool = useSelectedFeederPoolState(); const apy = useFeederPoolApy(feederPool.address); const massetPrice = useSelectedMassetPrice() ?? 1; + const [showMassetBalance, toggleMassetBalance] = useToggle(false); - const { vault, token } = feederPool; + const { + vault, + token, + masset: { token: massetToken }, + } = feederPool; const userAmount = token.balance?.simple ?? 0; const userStakedAmount = vault.account?.rawBalance.simple ?? 0; @@ -84,10 +121,29 @@ export const PoolOverview: FC = () => { ); const totalUserBalance = useMemo( - () => (userStakedAmount + userAmount) * massetPrice, - [massetPrice, userAmount, userStakedAmount], + () => + token.balance?.add(vault?.account?.rawBalance ?? BigDecimal.ZERO) ?? + BigDecimal.ZERO, + [userAmount, userStakedAmount], ); + const { estimatedOutputAmount } = useEstimatedOutput( + { + ...token, + amount: totalUserBalance, + } as BigDecimalInputValue, + { + ...massetToken, + } as BigDecimalInputValue, + false, + ); + + const handleBalanceSwitch = (e: any) => { + e?.stopPropagation(); + e?.preventDefault(); + toggleMassetBalance(); + }; + return showLiquidityMessage ? ( @@ -99,8 +155,33 @@ export const PoolOverview: FC = () => { active={selection === Stake} onClick={() => handleSelection(Stake)} > -

Balance

- +

+ {showMassetBalance ? `${massetToken?.symbol} Balance` : `Balance`} +

+
+ + + {showMassetBalance ? ( + estimatedOutputAmount?.fetching ? ( + + ) : estimatedOutputAmount?.value?.simple === 0 ? ( + '–' + ) : ( + 2 ? 4 : 2} + /> + ) + ) : ( + + )} + +
{!isSaveV1 && (