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)
---