import React, {useMemo} from 'react'; import {useWallet} from 'use-wallet'; import styled from 'styled-components'; import {createGlobalStyle} from 'styled-components'; import moment from 'moment'; import Label from '../../components/Label'; import {Box, Grid, Button, Typography, Card, CircularProgress, CardContent, Paper} from '@material-ui/core'; import ProgressCountdown from './ProgressCountdown'; import UnlockWallet from '../../components/UnlockWallet'; import TokenSymbol from '../../components/TokenSymbol'; import Page from '../../components/Page'; import DashboardInfoCard from '../../components/DashboardInfoCard'; import DashboardInfoCardNodes from './DashboardInfoCardNodes'; import HomeImage from '../../assets/img/fairybg.gif'; import useTreasuryAllocationTimes from '../../hooks/useTreasuryAllocationTimes'; import useBanks from '../../hooks/useBanks'; import useBank from '../../hooks/useBank'; import useHarvestAll from '../../hooks/useHarvestAll'; import useCompoundAll from '../../hooks/useCompoundAll'; import useUnicornStats from '../../hooks/useUnicornStats'; import useWingsStats from '../../hooks/useWingsStats'; import useWalletStats from '../../hooks/useWalletStats'; import CountUp from 'react-countup'; import {useMediaQuery} from '@material-ui/core'; import useTokenBalance from '../../hooks/useTokenBalance'; import {getDisplayBalance} from '../../utils/formatBalance'; import useUnicornFinance from '../../hooks/useUnicornFinance'; import unicornImg from '../../assets/img/unicorn.png'; import nodesImg from '../../assets/img/gnode.png'; import wingsImg from '../../assets/img/gshare.png'; import DashboardBoardroomCard from './DashboardBoardroomCard'; const BackgroundImage = createGlobalStyle` body { background: url(${HomeImage}) repeat !important; background-size: cover !important; // background: linear-gradient(90deg, rgba(144,17,105,1) 0%, rgba(95,17,144,1) 100%); } `; const Dashboard = () => { const {account} = useWallet(); const unicornFinance = useUnicornFinance(); const {to} = useTreasuryAllocationTimes(); const [banks] = useBanks(); const walletStats = useWalletStats(banks); const unicornStats = useUnicornStats(); const wingsStats = useWingsStats(); const fairylandPools = banks.filter( (bank) => (!bank.finished && bank.sectionInUI === 2) || bank.sectionInUI === 6 || bank.sectionInUI === 7, ); // node dashboard enable here const nodePools = [useBank('UnicornNode'), useBank('LPNode'), useBank('LPWlrsNode')]; // const onReward = useHarvestAll(fairylandPools); // const harvestNodes = useHarvestAll(nodePools); // const compoundNodes = useCompoundAll(nodePools); const unicornBalance = useTokenBalance(unicornFinance.UNICORN); const displayUnicornBalance = useMemo(() => getDisplayBalance(unicornBalance), [unicornBalance]); const wingsBalance = useTokenBalance(unicornFinance.WINGS); const displayWingsBalance = useMemo(() => getDisplayBalance(wingsBalance), [wingsBalance]); const magicbondBalance = useTokenBalance(unicornFinance.MAGICBOND); const displayMagicbondBalance = useMemo(() => getDisplayBalance(magicbondBalance), [magicbondBalance]); const unicornPriceInDollars = useMemo( () => (unicornStats ? Number(unicornStats.priceInDollars).toFixed(2) : null), [unicornStats], ); const wingsPriceInDollars = useMemo( () => (wingsStats ? Number(wingsStats.priceInDollars).toFixed(2) : null), [wingsStats], ); const matches = useMediaQuery('(min-width:900px)'); const matches960 = useMediaQuery('(max-width:960px)'); const [totalInvested, totalRewards, totalInFairyland, totalInNodes, totalInMagicroom] = useMemo( () => walletStats ? [ walletStats.total, walletStats.totalRewards, walletStats.totalInFairyland.toFixed(2), walletStats.totalInNodes.toFixed(2), walletStats.totalInMagicroom.toFixed(2), ] : [null, null, null, null], [walletStats], ); const getTotalInvested = () => { return ( totalInvested + Number(displayUnicornBalance) * Number(unicornPriceInDollars) + Number(displayWingsBalance) * Number(wingsPriceInDollars) ); }; return ( {!!account ? ( <> Dashboard My Wallet {' '} {displayUnicornBalance} {displayWingsBalance} {displayMagicbondBalance} My Total worth {totalInvested != null ? ( ) : ( )} Unicorn Fairyland {totalInFairyland ? ( ) : ( )} Unicorn Nodes (locked) {totalInNodes != null ? ( ) : ( )} Unicorn Magicroom {totalInMagicroom ? ( ) : ( )} Rewards to claim {' '} {totalRewards != null ? ( ) : ( )} Fairyland {/* */} {/* Swapsicle pools {' '} {fairylandPools .filter((bank) => bank.sectionInUI === 6) .map((bank) => ( ))} */} Wing Reward pools {' '} {fairylandPools .filter((bank) => bank.sectionInUI === 2) .map((bank) => ( ))} {/* Single Stake pools {' '} {fairylandPools .filter((bank) => bank.sectionInUI === 7) .map((bank) => ( ))} */} {/* Nodes {' '} */} {/* {nodePools.map((bank) => ( ))} */} Magicroom {' '} Next Epoch: ) : ( )} ); }; const StyledValue = styled.div` color: white; font-size: 30px; font-weight: 700; `; const StyledBalance = styled.div` align-items: center; display: flex; flex-direction: column; `; const Balances = styled.div` display: flex; flex-direction: row; justify-content: center; margin-bottom: ${(props) => props.theme.spacing[4]}px; `; const StyledBalanceWrapper = styled.div` align-items: center; display: flex; flex-direction: column; margin: 0 ${(props) => props.theme.spacing[3]}px; `; export default Dashboard;