From a3310544e4541d6f43265dd63a2f9a8ff00b1388 Mon Sep 17 00:00:00 2001 From: Manan Tank Date: Fri, 20 Jun 2025 22:43:04 +0530 Subject: [PATCH 1/2] Dashboard: Move Engine pages --- .../src/@/components/blocks/Sidebar.tsx | 1 + .../src/@/components/blocks/SidebarLayout.tsx | 1 + .../dashboard/src/@/components/ui/NavLink.tsx | 13 +- .../components/ProjectSidebarLayout.tsx | 14 ++- .../engine/dedicated/(general)/layout.tsx | 2 +- .../overview/components/engine-overview.tsx | 3 +- .../[project_slug]/(sidebar)/engine/page.tsx | 49 -------- .../[project_slug]/(sidebar)/layout.tsx | 42 ++++++- .../analytics/analytics-page.tsx | 0 .../analytics/filter.tsx | 0 .../analytics/ftux.client.tsx | 8 +- .../analytics/send-test-tx.client.tsx | 2 +- .../analytics/summary.tsx | 0 .../analytics/tx-chart/tx-chart-ui.tsx | 0 .../analytics/tx-chart/tx-chart.tsx | 0 .../analytics/tx-table/tx-table-ui.tsx | 2 +- .../analytics/tx-table/tx-table.tsx | 0 .../analytics/tx-table/types.ts | 0 .../cloud => transactions}/analytics/utils.ts | 0 .../explorer/components/scalar.tsx | 0 .../cloud => transactions}/explorer/page.tsx | 0 .../{engine/cloud => transactions}/layout.tsx | 19 +-- .../cloud => transactions}/lib/analytics.ts | 4 +- .../cloud => transactions}/lib/utils.ts | 0 .../lib/vault.client.ts | 0 .../{engine/cloud => transactions}/page.tsx | 2 +- .../create-server-wallet.client.tsx | 0 .../server-wallets/components/try-it-out.tsx | 46 +++---- .../server-wallets/page.tsx | 2 +- .../server-wallets/wallet-table/types.ts | 0 .../wallet-table/wallet-table-ui.client.tsx | 113 +++++++++--------- .../wallet-table/wallet-table.tsx | 0 .../cloud => transactions}/tx/[id]/layout.tsx | 2 +- .../cloud => transactions}/tx/[id]/page.tsx | 6 +- .../tx/[id]/transaction-details-ui.tsx | 0 .../create-vault-account.client.tsx | 4 +- .../components/list-access-tokens.client.tsx | 2 +- .../components/rotate-admin-key.client.tsx | 2 +- .../src/components/dashboard/StepsCard.tsx | 2 +- 39 files changed, 176 insertions(+), 165 deletions(-) delete mode 100644 apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/page.tsx rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/analytics-page.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/filter.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/ftux.client.tsx (95%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/send-test-tx.client.tsx (99%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/summary.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-chart/tx-chart-ui.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-chart/tx-chart.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-table/tx-table-ui.tsx (99%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-table/tx-table.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-table/types.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/utils.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/explorer/components/scalar.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/explorer/page.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/layout.tsx (78%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/lib/analytics.ts (96%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/lib/utils.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/lib/vault.client.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/page.tsx (98%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/components/create-server-wallet.client.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/components/try-it-out.tsx (92%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/page.tsx (97%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/wallet-table/types.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/wallet-table/wallet-table-ui.client.tsx (73%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/wallet-table/wallet-table.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/tx/[id]/layout.tsx (97%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/tx/[id]/page.tsx (83%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/tx/[id]/transaction-details-ui.tsx (100%) diff --git a/apps/dashboard/src/@/components/blocks/Sidebar.tsx b/apps/dashboard/src/@/components/blocks/Sidebar.tsx index 181abba4fc8..4b8ef9e5c83 100644 --- a/apps/dashboard/src/@/components/blocks/Sidebar.tsx +++ b/apps/dashboard/src/@/components/blocks/Sidebar.tsx @@ -9,6 +9,7 @@ export type SidebarBaseLink = { label: React.ReactNode; exactMatch?: boolean; icon?: React.FC<{ className?: string }>; + isActive?: (pathname: string) => boolean; }; export type SidebarLink = diff --git a/apps/dashboard/src/@/components/blocks/SidebarLayout.tsx b/apps/dashboard/src/@/components/blocks/SidebarLayout.tsx index 87403d09605..a2ab0beca42 100644 --- a/apps/dashboard/src/@/components/blocks/SidebarLayout.tsx +++ b/apps/dashboard/src/@/components/blocks/SidebarLayout.tsx @@ -123,6 +123,7 @@ function RenderSidebarGroup(props: { className="flex items-center gap-2 text-muted-foreground text-sm hover:bg-accent" activeClassName="text-foreground bg-accent" exactMatch={link.exactMatch} + isActive={link.isActive} onClick={() => { sidebar.setOpenMobile(false); }} diff --git a/apps/dashboard/src/@/components/ui/NavLink.tsx b/apps/dashboard/src/@/components/ui/NavLink.tsx index 11bfb2948f4..195d979f977 100644 --- a/apps/dashboard/src/@/components/ui/NavLink.tsx +++ b/apps/dashboard/src/@/components/ui/NavLink.tsx @@ -11,15 +11,18 @@ export type NavButtonProps = { href: string; exactMatch?: boolean; onClick?: () => void; + isActive?: (pathname: string) => boolean; }; export function NavLink(props: React.PropsWithChildren) { const pathname = usePathname(); - const isActive = pathname - ? props.exactMatch - ? pathname === props.href - : pathname.startsWith(props.href) - : false; + const isActive = props.isActive + ? props.isActive(pathname) + : pathname + ? props.exactMatch + ? pathname === props.href + : pathname.startsWith(props.href) + : false; return ( { + return ( + pathname.startsWith(`${layoutPath}/transactions`) || + pathname.startsWith(`${layoutPath}/engine/dedicated`) + ); + }, }, { href: `${layoutPath}/insight`, diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/layout.tsx index 8b61fc3b33c..6d0d5a1eea0 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/layout.tsx @@ -95,7 +95,7 @@ function EngineLegacyBannerUI(props: {
@@ -109,3 +118,32 @@ export default async function ProjectLayout(props: { ); } + +async function getEngineLinkType(params: { + authToken: string; + project: Project; +}) { + const projectEngineCloudService = params.project.services.find( + (service) => service.name === "engineCloud", + ); + + const engineCloudToken = projectEngineCloudService?.managementAccessToken; + + // if we have a management access token, link to engine cloud page + let engineLinkType: "cloud" | "dedicated" = "cloud"; + + // if we don't have a engine cloud management access token, check if there are any legacy engine instances + if (!engineCloudToken) { + const engineInstances = await getEngineInstances({ + authToken: params.authToken, + teamIdOrSlug: params.project.teamId, + }); + + // if we have any legacy engine instances, link to the legacy engine page + if (engineInstances.data && engineInstances.data.length > 0) { + engineLinkType = "dedicated"; + } + } + + return engineLinkType; +} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/analytics-page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/analytics-page.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/analytics-page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/analytics-page.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/filter.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/filter.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/filter.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/filter.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/ftux.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx similarity index 95% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/ftux.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx index 79cd708767e..e9d83ed943d 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/ftux.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx @@ -5,7 +5,7 @@ import { type Step, StepsCard } from "components/dashboard/StepsCard"; import Link from "next/link"; import { useMemo, useState } from "react"; import type { ThirdwebClient } from "thirdweb"; -import { CreateVaultAccountButton } from "../../../vault/components/create-vault-account.client"; +import { CreateVaultAccountButton } from "../../vault/components/create-vault-account.client"; import CreateServerWallet from "../server-wallets/components/create-server-wallet.client"; import type { Wallet } from "../server-wallets/wallet-table/types"; import { SendTestTransaction } from "./send-test-tx.client"; @@ -107,7 +107,11 @@ export const EngineChecklist: React.FC = (props) => { return null; } return ( - + ); }; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/send-test-tx.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/send-test-tx.client.tsx similarity index 99% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/send-test-tx.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/send-test-tx.client.tsx index b45ae04d337..5b0f62b753b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/send-test-tx.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/send-test-tx.client.tsx @@ -263,7 +263,7 @@ export function SendTestTransaction(props: { onClick={() => { if (props.walletId) { router.replace( - `/team/${props.teamSlug}/${props.project.slug}/engine/cloud`, + `/team/${props.teamSlug}/${props.project.slug}/transactions`, ); } else { router.refresh(); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/summary.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/summary.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/summary.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/summary.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-chart/tx-chart-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart-ui.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-chart/tx-chart-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart-ui.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-chart/tx-chart.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-chart/tx-chart.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx similarity index 99% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx index ad5333d358c..877fbcf50a0 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table-ui.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx @@ -138,7 +138,7 @@ export function TransactionsTableUI(props: { className="cursor-pointer hover:bg-accent/50" onClick={() => { router.push( - `/team/${props.teamSlug}/${props.project.slug}/engine/cloud/tx/${tx.id}`, + `/team/${props.teamSlug}/${props.project.slug}/transactions/tx/${tx.id}`, ); }} > diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/types.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/types.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/types.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/utils.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/utils.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/explorer/components/scalar.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/explorer/components/scalar.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/explorer/components/scalar.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/explorer/components/scalar.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/explorer/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/explorer/page.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/explorer/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/explorer/page.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx similarity index 78% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx index 13be81a2cd5..d1158fbe6fb 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx @@ -3,7 +3,6 @@ import { Button } from "@/components/ui/button"; import { TabPathLinks } from "@/components/ui/tabs"; import { NEXT_PUBLIC_ENGINE_CLOUD_URL } from "@/constants/public-envs"; import Link from "next/link"; -import { EngineIcon } from "../../../../../../(dashboard)/(chain)/components/server/icons/EngineIcon"; export default async function Page(props: { params: Promise<{ team_slug: string; project_slug: string }>; @@ -23,8 +22,8 @@ function TransactionsLayout(props: { teamSlug: string; children: React.ReactNode; }) { - const engineBaseSlug = `/team/${props.teamSlug}/${props.projectSlug}/engine`; - const engineLayoutSlug = `${engineBaseSlug}/cloud`; + const projectLayoutPath = `/team/${props.teamSlug}/${props.projectSlug}`; + const layoutPath = `${projectLayoutPath}/transactions`; return (
@@ -36,12 +35,6 @@ function TransactionsLayout(props: {

Transactions{" "} - - Engine Cloud -

- + @@ -74,16 +67,16 @@ function TransactionsLayout(props: { links={[ { name: "Transactions", - path: `${engineLayoutSlug}`, + path: `${layoutPath}`, exactMatch: true, }, { name: "API Explorer", - path: `${engineLayoutSlug}/explorer`, + path: `${layoutPath}/explorer`, }, { name: "Server Wallets", - path: `${engineLayoutSlug}/server-wallets`, + path: `${layoutPath}/server-wallets`, }, ]} /> diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/analytics.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/analytics.ts similarity index 96% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/analytics.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/analytics.ts index 4bd8057bf2e..05cc58dfc37 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/analytics.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/analytics.ts @@ -1,6 +1,6 @@ import { NEXT_PUBLIC_ENGINE_CLOUD_URL } from "@/constants/public-envs"; -import type { TransactionStats } from "../../../../../../../../../types/analytics"; -import { getAuthToken } from "../../../../../../../api/lib/getAuthToken"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; +import type { TransactionStats } from "types/analytics"; import type { Transaction, TransactionsResponse, diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/utils.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/utils.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/utils.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/utils.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/vault.client.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/vault.client.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/vault.client.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/vault.client.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx similarity index 98% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx index 8e6575b3807..cf8625bbf69 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx @@ -1,9 +1,9 @@ import { getProject } from "@/api/projects"; import { NEXT_PUBLIC_THIRDWEB_VAULT_URL } from "@/constants/public-envs"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; import { createVaultClient, listEoas } from "@thirdweb-dev/vault-sdk"; import { notFound, redirect } from "next/navigation"; -import { getAuthToken } from "../../../../../../api/lib/getAuthToken"; import { TransactionsAnalyticsPageContent } from "./analytics/analytics-page"; import { EngineChecklist } from "./analytics/ftux.client"; import { TransactionAnalyticsSummary } from "./analytics/summary"; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/create-server-wallet.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/create-server-wallet.client.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/create-server-wallet.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/create-server-wallet.client.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/try-it-out.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx similarity index 92% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/try-it-out.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx index 7c45fca4cbd..50b7885938d 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/try-it-out.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx @@ -11,7 +11,7 @@ export function TryItOut() { const [activeTab, setActiveTab] = useState("sdk"); return ( -
+
@@ -25,8 +25,10 @@ export function TryItOut() {
+
-
+
{activeTab === "sdk" && ( -
+
Using the thirdweb SDK on the backend @@ -114,22 +116,26 @@ export function TryItOut() {

-

- Installation -

- -

- Usage example: Minting a ERC1155 NFT to a user -

- +
+

+ Installation +

+ +
+
+

+ Usage example: Minting a ERC1155 NFT to a user +

+ +
)} {activeTab === "curl" && ( @@ -140,7 +146,7 @@ export function TryItOut() { /> )} {activeTab === "js" && ( -
+

A lightweight, type safe wrapper package of the Engine HTTP API is available on{" "} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/page.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/page.tsx index 592794fc9f5..dd78d3b70ac 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/page.tsx @@ -1,9 +1,9 @@ import { getProject } from "@/api/projects"; import { NEXT_PUBLIC_THIRDWEB_VAULT_URL } from "@/constants/public-envs"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; import { createVaultClient, listEoas } from "@thirdweb-dev/vault-sdk"; import { notFound } from "next/navigation"; -import { getAuthToken } from "../../../../../../../api/lib/getAuthToken"; import type { Wallet } from "./wallet-table/types"; import { ServerWalletsTable } from "./wallet-table/wallet-table"; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/types.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/types.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/types.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table-ui.client.tsx similarity index 73% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table-ui.client.tsx index ad2b0320436..8dc84d8b319 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table-ui.client.tsx @@ -89,7 +89,7 @@ export function ServerWalletsTableUI({ />

- + @@ -137,60 +137,63 @@ export function ServerWalletsTableUI({
-
-
- Found {totalRecords} server wallets + + {totalPages > 1 && ( +
+
+ Found {totalRecords} server wallets +
+ + + + 1 ? currentPage - 1 : 1 + }`} + passHref + legacyBehavior + > + + + + {Array.from({ length: totalPages }, (_, i) => i + 1).map( + (pageNumber) => ( + + + + {pageNumber} + + + + ), + )} + + + = totalPages + ? "pointer-events-none opacity-50" + : "" + } + /> + + + +
- - - - 1 ? currentPage - 1 : 1 - }`} - passHref - legacyBehavior - > - - - - {Array.from({ length: totalPages }, (_, i) => i + 1).map( - (pageNumber) => ( - - - - {pageNumber} - - - - ), - )} - - - = totalPages - ? "pointer-events-none opacity-50" - : "" - } - /> - - - - -
+ )}
); } @@ -260,7 +263,7 @@ function SendTestTransaction(props: { size="sm" onClick={() => { router.push( - `/team/${props.teamSlug}/${props.project.slug}/engine/cloud?testTxWithWallet=${props.wallet.id}`, + `/team/${props.teamSlug}/${props.project.slug}/transactions?testTxWithWallet=${props.wallet.id}`, ); }} > diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/layout.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/layout.tsx index 849b1af7bb7..b9be32f43ed 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/layout.tsx @@ -12,7 +12,7 @@ export default function TransactionLayout({
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/page.tsx similarity index 83% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/page.tsx index 85d5001fd0c..bf16789ca24 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/page.tsx @@ -1,8 +1,8 @@ import { getProject } from "@/api/projects"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; +import { loginRedirect } from "@app/login/loginRedirect"; import { notFound, redirect } from "next/navigation"; -import { getAuthToken } from "../../../../../../../../api/lib/getAuthToken"; -import { loginRedirect } from "../../../../../../../../login/loginRedirect"; import { getSingleTransaction } from "../../lib/analytics"; import { TransactionDetailsUI } from "./transaction-details-ui"; @@ -19,7 +19,7 @@ export default async function TransactionPage({ ]); if (!authToken) { - loginRedirect(`/team/${team_slug}/${project_slug}/engine/cloud/tx/${id}`); + loginRedirect(`/team/${team_slug}/${project_slug}/transactions/tx/${id}`); } if (!project) { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/transaction-details-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/transaction-details-ui.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/transaction-details-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/transaction-details-ui.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/create-vault-account.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/create-vault-account.client.tsx index 5dcc541c7cc..7adf7b79855 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/create-vault-account.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/create-vault-account.client.tsx @@ -23,13 +23,13 @@ import { } from "lucide-react"; import { useState } from "react"; import { toast } from "sonner"; -import { storeUserAccessToken } from "../../engine/cloud/analytics/utils"; +import { storeUserAccessToken } from "../../transactions/analytics/utils"; import { createManagementAccessToken, createWalletAccessToken, initVaultClient, maskSecret, -} from "../../engine/cloud/lib/vault.client"; +} from "../../transactions/lib/vault.client"; export function CreateVaultAccountButton(props: { project: Project; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/list-access-tokens.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/list-access-tokens.client.tsx index 175fd32010f..a350c090373 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/list-access-tokens.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/list-access-tokens.client.tsx @@ -20,7 +20,7 @@ import { SERVER_WALLET_MANAGEMENT_ACCESS_TOKEN_PURPOSE, createWalletAccessToken, initVaultClient, -} from "../../engine/cloud/lib/vault.client"; +} from "../../transactions/lib/vault.client"; export default function ListAccessTokens(props: { project: Project; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/rotate-admin-key.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/rotate-admin-key.client.tsx index dae5b3fd31f..c7c44b7f5fc 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/rotate-admin-key.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/rotate-admin-key.client.tsx @@ -31,7 +31,7 @@ import { createWalletAccessToken, initVaultClient, maskSecret, -} from "../../engine/cloud/lib/vault.client"; +} from "../../transactions/lib/vault.client"; export default function RotateAdminKeyButton(props: { project: Project }) { const [modalOpen, setModalOpen] = useState(false); diff --git a/apps/dashboard/src/components/dashboard/StepsCard.tsx b/apps/dashboard/src/components/dashboard/StepsCard.tsx index 3e9542fd985..385072b75fd 100644 --- a/apps/dashboard/src/components/dashboard/StepsCard.tsx +++ b/apps/dashboard/src/components/dashboard/StepsCard.tsx @@ -37,7 +37,7 @@ export const StepsCard: React.FC = ({ return (
{/* Title + Desc */} -

+

{title}

From b8fdf4a70f93b280c0737046264dfc314608e827 Mon Sep 17 00:00:00 2001 From: Manan Tank Date: Fri, 20 Jun 2025 23:17:49 +0530 Subject: [PATCH 2/2] Dashboard: Add redirects for project pages (#7386) --- apps/dashboard/redirects.js | 55 ++++++++++++++++--- .../(sidebar)/transactions/analytics/utils.ts | 3 + 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/apps/dashboard/redirects.js b/apps/dashboard/redirects.js index 837fa6a5c5c..bfe7f58ddce 100644 --- a/apps/dashboard/redirects.js +++ b/apps/dashboard/redirects.js @@ -62,6 +62,51 @@ const legacyDashboardToTeamRedirects = [ }, ]; +const projectRoute = "/team/:team_slug/:project_slug"; + +const projectPageRedirects = [ + { + source: `${projectRoute}/connect/pay/:path*`, + destination: `${projectRoute}/universal-bridge/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/connect/universal-bridge/:path*`, + destination: `${projectRoute}/universal-bridge/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/connect/account-abstraction/:path*`, + destination: `${projectRoute}/account-abstraction/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/connect/in-app-wallets/:path*`, + destination: `${projectRoute}/wallets/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/engine/cloud/vault/:path*`, + destination: `${projectRoute}/vault/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/engine/cloud/:path*`, + destination: `${projectRoute}/transactions/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/assets/:path*`, + destination: `${projectRoute}/tokens/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/nebula/:path*`, + destination: projectRoute, + permanent: false, + }, +]; + /** @type {import('next').NextConfig['redirects']} */ async function redirects() { return [ @@ -326,14 +371,6 @@ async function redirects() { destination: "/", permanent: false, }, - // pay > universal-bridge redirect - { - source: "/team/:team_slug/:project_slug/connect/pay/:path*", - destination: - "/team/:team_slug/:project_slug/connect/universal-bridge/:path*", - permanent: false, - }, - // all /learn/tutorials (and sub-routes) -> /learn/guides { source: "/learn/tutorials/:path*", @@ -382,8 +419,8 @@ async function redirects() { destination: "/transactions", permanent: false, }, - ...legacyDashboardToTeamRedirects, + ...projectPageRedirects, ]; } diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts index 69ca753fd9d..a66a7e79469 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts @@ -6,6 +6,9 @@ export function storeUserAccessToken(projectId: string, accessToken: string) { } export function getUserAccessToken(projectId: string) { + if (typeof localStorage === "undefined") { + return null; + } return localStorage.getItem( `thirdweb:engine-cloud-user-access-token-${projectId}`, );