Skip to content

Commit 5f5738e

Browse files
committed
fix: bridge sitemap generation and robots caching
1 parent bc93a46 commit 5f5738e

2 files changed

Lines changed: 25 additions & 8 deletions

File tree

src/app/robots.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { isProduction } from '@/utils/isProduction';
44
import { getLearnSitemapChunkIds } from '@/utils/sitemaps/learn';
55
import type { MetadataRoute } from 'next';
66

7-
export const dynamic = 'force-dynamic';
7+
export const dynamic = 'force-static';
8+
export const revalidate = 86400;
89

910
export default async function robots(): Promise<MetadataRoute.Robots> {
1011
// Cannot have a sitemap index yet with app router, so we list chunked sitemap URLs here.

src/utils/sitemaps/bridge.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,33 @@
11
import { getChainsQuery } from '@/hooks/useChains';
2+
import { getTokensQuery } from '@/hooks/useTokens';
23
import coins from '@/utils/coins';
34
import { getBridgeUrl } from '@/utils/getBridgeUrl';
45
import { buildUrl, toSitemapDate } from '@/utils/sitemap';
5-
import { getChainById } from '@/utils/tokenAndChain';
6+
import {
7+
getChainById,
8+
getTokenBySymbolOnSpecificChain,
9+
} from '@/utils/tokenAndChain';
610
import type { SitemapXmlEntry } from '@/utils/sitemaps/xml';
711
import { isAlphanumeric } from '@/utils/validation-schemas';
8-
import type { ExtendedChain, Token } from '@lifi/sdk';
12+
import type { ExtendedChain, Token, TokensResponse } from '@lifi/sdk';
913

1014
export const dynamic = 'force-static';
1115

12-
const SITEMAP_LIMIT = 50_000;
16+
const SITEMAP_LIMIT = 10_000;
1317

14-
const getFilteredCoins = (availableChainIds: number[]): Token[] =>
18+
const getFilteredCoins = (
19+
availableChainIds: number[],
20+
availableTokens: TokensResponse['tokens'],
21+
): Token[] =>
1522
coins.filter(
1623
(coin) =>
17-
availableChainIds.includes(coin.chainId) && isAlphanumeric(coin.symbol),
24+
availableChainIds.includes(coin.chainId) &&
25+
isAlphanumeric(coin.symbol) &&
26+
getTokenBySymbolOnSpecificChain(
27+
availableTokens,
28+
coin.chainId,
29+
coin.symbol,
30+
) !== undefined,
1831
) as Token[];
1932

2033
const generateBridgePairs = (tokens: Token[]): Array<[Token, Token]> => {
@@ -32,9 +45,12 @@ const generateBridgePairs = (tokens: Token[]): Array<[Token, Token]> => {
3245
};
3346

3447
const getChainData = async () => {
35-
const { chains } = await getChainsQuery();
48+
const [{ chains }, availableTokens] = await Promise.all([
49+
getChainsQuery(),
50+
getTokensQuery(),
51+
]);
3652
const availableChainIds = chains.map((chain) => chain.id);
37-
const filteredCoins = getFilteredCoins(availableChainIds);
53+
const filteredCoins = getFilteredCoins(availableChainIds, availableTokens);
3854
const pairs = generateBridgePairs(filteredCoins);
3955
return { chains, pairs };
4056
};

0 commit comments

Comments
 (0)