import _ from 'lodash' import { useRouter } from 'next/router' import { useEffect, useMemo, useState } from 'react' import { useAccount } from 'wagmi' import { useTranslations } from 'next-intl' import deepmerge from 'deepmerge' import { DISPLAY_POOLS_BY_CHAIN } from '@constants/tokens' import { DEFAULT_FROM_CHAIN } from '@/constants/swap' import { METIS_POOL_SWAP_TOKEN_MIGRATED, METIS_WETH_SWAP_TOKEN_MIGRATED, } from '@/constants/tokens/poolMaster' import { segmentAnalyticsEvent } from '@/contexts/SegmentAnalyticsProvider' import { LandingPageWrapper } from '@layouts/LandingPageWrapper' import StandardPageContainer from '@layouts/StandardPageContainer' import { PageHeader } from '@/components/PageHeader' import Grid from '@/components/ui/tailwind/Grid' import PoolCards from './PoolCards' import * as CHAINS from '@/constants/chains/master' 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 PoolsPage = () => { const { address: currentAddress } = useAccount() const { chain } = useAccount() const [connectedChainId, setConnectedChainId] = useState(0) const [address, setAddress] = useState(undefined) const router = useRouter() const t = useTranslations('Pools') const migratedPools = { 1088: [METIS_POOL_SWAP_TOKEN_MIGRATED, METIS_WETH_SWAP_TOKEN_MIGRATED], } const blastPools = filterPoolsByBlast() const incentivizedPools = useMemo( () => filterPoolsByIncentivization(true), [DISPLAY_POOLS_BY_CHAIN] ) let unIncentivizedPools = useMemo( () => filterPoolsByIncentivization(false), [DISPLAY_POOLS_BY_CHAIN] ) unIncentivizedPools[1088] = unIncentivizedPools[1088].filter( (pool) => pool !== METIS_POOL_SWAP_TOKEN_MIGRATED && pool !== METIS_WETH_SWAP_TOKEN_MIGRATED ) useEffect(() => { segmentAnalyticsEvent(`[Pools page] arrives`, { fromChainId: chain?.id, query: router.query, pathname: router.pathname, }) }, []) useEffect(() => { setConnectedChainId(chain?.id ?? DEFAULT_FROM_CHAIN) }, [chain]) useEffect(() => { setAddress(currentAddress) }, [currentAddress]) return (
) } const filterPoolsByBlast = () => _.pickBy( _.mapValues(DISPLAY_POOLS_BY_CHAIN, (tokens) => tokens.filter((token) => token.chainId === CHAINS.BLAST.id) ), (tokens) => tokens.length > 0 ) const filterPoolsByIncentivization = (incentivized) => _.pickBy( _.mapValues(DISPLAY_POOLS_BY_CHAIN, (tokens) => tokens.filter( (token) => token.incentivized === incentivized && token.chainId !== CHAINS.BLAST.id ) ), (tokens) => tokens.length > 0 ) export default PoolsPage