diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/layout.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/layout.tsx index 2fa3c2a7c02..da83be77f27 100644 --- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/layout.tsx +++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/layout.tsx @@ -3,7 +3,9 @@ import { SidebarLayout } from "@/components/blocks/SidebarLayout"; import { ContractMetadata } from "components/custom-contract/contract-header/contract-metadata"; import { DeprecatedAlert } from "components/shared/DeprecatedAlert"; import type { Metadata } from "next"; +import { notFound } from "next/navigation"; import { getContractMetadata } from "thirdweb/extensions/common"; +import { isContractDeployed } from "thirdweb/utils"; import { resolveFunctionSelectors } from "../../../../../lib/selectors"; import { shortenIfAddress } from "../../../../../utils/usedapp-external"; import { ConfigureCustomChain } from "./ConfigureCustomChain"; @@ -26,6 +28,13 @@ export default async function Layout(props: { return ; } + // check if the contract exists + const isValidContract = await isContractDeployed(info.contract); + if (!isValidContract) { + // TODO - replace 404 with a better page to upsale deploy or other thirdweb products + notFound(); + } + const { contract, chainMetadata } = info; const contractPageMetadata = await getContractPageMetadata(contract); const sidebarLinks = getContractPageSidebarLinks({ diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx index 0c2f3ccaa7d..ea4488de829 100644 --- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx +++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx @@ -1,4 +1,5 @@ import { PublishedBy } from "components/contract-components/shared/published-by"; +import { ErrorBoundary } from "react-error-boundary"; import type { ThirdwebContract } from "thirdweb"; import { AnalyticsOverview } from "./components/Analytics"; import { BuildYourApp } from "./components/BuildYourApp"; @@ -99,7 +100,9 @@ export const ContractOverviewPage: React.FC = ({ />
- + + +
);