From 038adcd418aed8974b287791ad3229b7695d7fd6 Mon Sep 17 00:00:00 2001 From: aelmanaa Date: Fri, 25 Jul 2025 00:07:39 +0200 Subject: [PATCH] faster --- .../directory/mainnet/chain/[...chain].astro | 52 +++++-------------- .../directory/mainnet/token/[...token].astro | 32 +++++------- .../directory/testnet/chain/[...chain].astro | 52 +++++-------------- .../directory/testnet/token/[...token].astro | 32 +++++------- 4 files changed, 56 insertions(+), 112 deletions(-) diff --git a/src/pages/ccip/directory/mainnet/chain/[...chain].astro b/src/pages/ccip/directory/mainnet/chain/[...chain].astro index 1ad6a54ad14..9fc9ca80a12 100644 --- a/src/pages/ccip/directory/mainnet/chain/[...chain].astro +++ b/src/pages/ccip/directory/mainnet/chain/[...chain].astro @@ -1,4 +1,6 @@ --- +export const prerender = false + import Chain from "~/components/CCIP/Chain/Chain.astro" import DecommissionedChain from "~/components/CCIP/Chain/DecommissionedChain.astro" import { @@ -11,47 +13,21 @@ import { getDecommissionedNetwork, } from "~/config/data/ccip" -export async function getStaticPaths() { - // Get both active and decommissioned networks - const activeNetworks = getAllNetworks({ filter: Environment.Mainnet }) - const decommissionedNetworks = getAllDecommissionedNetworks({ filter: Environment.Mainnet }) +// Handle dynamic routing +const { chain } = Astro.params +const environment = Environment.Mainnet - // Combine all chain names - const allChains = [ - ...activeNetworks.map(({ chain }) => ({ chain, isDecommissioned: false })), - ...decommissionedNetworks.map(({ chain }) => ({ chain, isDecommissioned: true })), - ] +// Get data dynamically +const activeNetworks = getAllNetworks({ filter: environment }) +const decommissionedNetworks = getAllDecommissionedNetworks({ filter: environment }) - return allChains.map(({ chain, isDecommissioned }) => { - if (isDecommissioned) { - const decomNetwork = decommissionedNetworks.find((network) => network.chain === chain) as DecommissionedNetwork - return { - params: { chain }, - props: { - decomNetwork, - environment: Environment.Mainnet, - isDecommissioned: true, - }, - } - } else { - const activeNetwork = activeNetworks.find((network) => network.chain === chain) as Network - return { - params: { chain }, - props: { - activeNetwork, - environment: Environment.Mainnet, - isDecommissioned: false, - }, - } - } - }) -} +const activeNetwork = activeNetworks.find((n) => n.chain === chain) +const decomNetwork = decommissionedNetworks.find((n) => n.chain === chain) +const isDecommissioned = !activeNetwork && !!decomNetwork -const { decomNetwork, activeNetwork, environment, isDecommissioned } = Astro.props as { - decomNetwork?: DecommissionedNetwork - activeNetwork?: Network - environment: Environment - isDecommissioned: boolean +// Handle 404s +if (!activeNetwork && !decomNetwork) { + return Astro.redirect("/404") } --- diff --git a/src/pages/ccip/directory/mainnet/token/[...token].astro b/src/pages/ccip/directory/mainnet/token/[...token].astro index 3dc9c6bc836..50c43cb8db9 100644 --- a/src/pages/ccip/directory/mainnet/token/[...token].astro +++ b/src/pages/ccip/directory/mainnet/token/[...token].astro @@ -1,30 +1,26 @@ --- +export const prerender = false + import Token from "~/components/CCIP/Token/Token.astro" import { Environment, getAllSupportedTokens, Version } from "~/config/data/ccip" import { getTokenIconUrl } from "~/features/utils" -export async function getStaticPaths() { - const supportedTokens = getAllSupportedTokens({ - environment: Environment.Mainnet, - version: Version.V1_2_0, - }) +// Handle dynamic routing +const { token } = Astro.params +const environment = Environment.Mainnet - const tokens = Object.keys(supportedTokens).sort((a, b) => a.localeCompare(b, undefined, { sensitivity: "base" })) - const pages = tokens.map((token) => ({ token })) +// Get supported tokens dynamically +const supportedTokens = getAllSupportedTokens({ + environment, + version: Version.V1_2_0, +}) - return pages.map(({ token }) => { - return { - params: { token }, - props: { - token: tokens.find((t) => t === token), - logo: getTokenIconUrl(token), - environment: Environment.Mainnet, - }, - } - }) +// Check if token exists +if (!supportedTokens[token]) { + return Astro.redirect("/404") } -const { token, logo, environment } = Astro.props +const logo = getTokenIconUrl(token) --- diff --git a/src/pages/ccip/directory/testnet/chain/[...chain].astro b/src/pages/ccip/directory/testnet/chain/[...chain].astro index 8f0b99a1e58..4d767c591ca 100644 --- a/src/pages/ccip/directory/testnet/chain/[...chain].astro +++ b/src/pages/ccip/directory/testnet/chain/[...chain].astro @@ -1,4 +1,6 @@ --- +export const prerender = false + import Chain from "~/components/CCIP/Chain/Chain.astro" import DecommissionedChain from "~/components/CCIP/Chain/DecommissionedChain.astro" import { @@ -9,47 +11,21 @@ import { DecommissionedNetwork, } from "~/config/data/ccip" -export async function getStaticPaths() { - // Get both active and decommissioned networks - const activeNetworks = getAllNetworks({ filter: Environment.Testnet }) - const decommissionedNetworks = getAllDecommissionedNetworks({ filter: Environment.Testnet }) +// Handle dynamic routing +const { chain } = Astro.params +const environment = Environment.Testnet - // Combine all chain names - const allChains = [ - ...activeNetworks.map(({ chain }) => ({ chain, isDecommissioned: false })), - ...decommissionedNetworks.map(({ chain }) => ({ chain, isDecommissioned: true })), - ] +// Get data dynamically +const activeNetworks = getAllNetworks({ filter: environment }) +const decommissionedNetworks = getAllDecommissionedNetworks({ filter: environment }) - return allChains.map(({ chain, isDecommissioned }) => { - if (isDecommissioned) { - const decomNetwork = decommissionedNetworks.find((network) => network.chain === chain) as DecommissionedNetwork - return { - params: { chain }, - props: { - decomNetwork, - environment: Environment.Testnet, - isDecommissioned: true, - }, - } - } else { - const activeNetwork = activeNetworks.find((network) => network.chain === chain) as Network - return { - params: { chain }, - props: { - activeNetwork, - environment: Environment.Testnet, - isDecommissioned: false, - }, - } - } - }) -} +const activeNetwork = activeNetworks.find((n) => n.chain === chain) +const decomNetwork = decommissionedNetworks.find((n) => n.chain === chain) +const isDecommissioned = !activeNetwork && !!decomNetwork -const { decomNetwork, activeNetwork, environment, isDecommissioned } = Astro.props as { - decomNetwork?: DecommissionedNetwork - activeNetwork?: Network - environment: Environment - isDecommissioned: boolean +// Handle 404s +if (!activeNetwork && !decomNetwork) { + return Astro.redirect("/404") } --- diff --git a/src/pages/ccip/directory/testnet/token/[...token].astro b/src/pages/ccip/directory/testnet/token/[...token].astro index 875d56d6088..fed46c1bf9b 100644 --- a/src/pages/ccip/directory/testnet/token/[...token].astro +++ b/src/pages/ccip/directory/testnet/token/[...token].astro @@ -1,30 +1,26 @@ --- +export const prerender = false + import Token from "~/components/CCIP/Token/Token.astro" import { Environment, getAllSupportedTokens, Version } from "~/config/data/ccip" import { getTokenIconUrl } from "~/features/utils" -export async function getStaticPaths() { - const supportedTokens = getAllSupportedTokens({ - environment: Environment.Testnet, - version: Version.V1_2_0, - }) +// Handle dynamic routing +const { token } = Astro.params +const environment = Environment.Testnet - const tokens = Object.keys(supportedTokens).sort((a, b) => a.localeCompare(b, undefined, { sensitivity: "base" })) - const pages = tokens.map((token) => ({ token })) +// Get supported tokens dynamically +const supportedTokens = getAllSupportedTokens({ + environment, + version: Version.V1_2_0, +}) - return pages.map(({ token }) => { - return { - params: { token }, - props: { - token: tokens.find((t) => t === token), - logo: getTokenIconUrl(token), - environment: Environment.Testnet, - }, - } - }) +// Check if token exists +if (!supportedTokens[token]) { + return Astro.redirect("/404") } -const { token, logo, environment } = Astro.props +const logo = getTokenIconUrl(token) ---