import { useEffect, useState } from 'react' import { useAccount } from 'wagmi' import { useTranslations } from 'next-intl' import { useRouter } from 'next/router' import Link from 'next/link' import toast from 'react-hot-toast' import { ChevronLeftIcon } from '@heroicons/react/outline' import deepmerge from 'deepmerge' import { Token } from '@/utils/types' import { STAKABLE_TOKENS } from '@/constants/tokens' import Grid from '@/components/ui/tailwind/Grid' import { PageHeader } from '@/components/PageHeader' import { LandingPageWrapper } from '@/components/layouts/LandingPageWrapper' import StakeCard from './StakeCard' import { segmentAnalyticsEvent } from '@/contexts/SegmentAnalyticsProvider' import { POOLS_PATH } from '@/constants/urls' export async function getStaticProps({ locale }) { const userMessages = (await import(`../../messages/${locale}.json`)).default const defaultMessages = (await import(`../../messages/en-US.json`)).default const messages = deepmerge(defaultMessages, userMessages) return { props: { messages, }, } } const StakePage = () => { const { chain: connectedChain } = useAccount() const { address: currentAddress } = useAccount() const [address, setAddress] = useState(undefined) const [isClient, setIsClient] = useState(false) const [columns, setColumns] = useState(1) const t = useTranslations('Pools') const router = useRouter() const { query, pathname } = router const availableStakingTokens: Token[] | [] = connectedChain && STAKABLE_TOKENS[connectedChain.id] ? STAKABLE_TOKENS[connectedChain.id] : [] const routerIndices = availableStakingTokens.map((token) => token.routerIndex) useEffect(() => { segmentAnalyticsEvent(`[Stake page] arrives`, { connectedChainId: connectedChain ? connectedChain.id : null, query, pathname, routerIndices, }) }, []) useEffect(() => { setAddress(currentAddress) }, [currentAddress]) useEffect(() => { const isSingle = availableStakingTokens.length < 2 setColumns(isSingle ? 1 : 2) if (availableStakingTokens.length === 0) { router.push('/pools') } }, [availableStakingTokens, router]) useEffect(() => { setIsClient(true) }, []) if (!connectedChain) { toast.error('Please connect to see stakes', { id: 'approve-in-progress-popup', duration: 5000, }) return } if (connectedChain && availableStakingTokens.length === 0) { toast.error(`No stakes available for ${connectedChain.name} network`, { id: 'approve-in-progress-popup', duration: 5000, }) return } return (
{t('Back to Pools')}
{isClient && availableStakingTokens.map((token, key) => { if (token.notStake) { return null } return ( ) })}
) } export default StakePage