diff --git a/apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts b/apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts index 26e4986bb27..ee8a12678d6 100644 --- a/apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts +++ b/apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts @@ -7,12 +7,12 @@ import { useQuery, useQueryClient, } from "@tanstack/react-query"; -import type { ResultItem } from "app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/metrics/components/StatusCodes"; import type { EngineBackendWalletType } from "lib/engine"; import { useState } from "react"; import { useActiveAccount } from "thirdweb/react"; import invariant from "tiny-invariant"; -import type { EngineStatus } from "../../../app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/transactions-table"; +import type { ResultItem } from "../../../app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/metrics/components/StatusCodes"; +import type { EngineStatus } from "../../../app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/transactions-table"; import { engineKeys } from "../cache-keys"; // Engine instances @@ -1641,7 +1641,11 @@ interface EngineResourceMetrics { }; } -export function useEngineSystemMetrics(engineId: string, teamIdOrSlug: string) { +export function useEngineSystemMetrics( + engineId: string, + teamIdOrSlug: string, + projectSlug: string, +) { const [enabled, setEnabled] = useState(true); return useQuery({ @@ -1649,7 +1653,7 @@ export function useEngineSystemMetrics(engineId: string, teamIdOrSlug: string) { queryFn: async () => { const res = await apiServerProxy({ method: "GET", - pathname: `/v1/teams/${teamIdOrSlug}/engine/${engineId}/metrics`, + pathname: `/v1/teams/${teamIdOrSlug}/${projectSlug}/engine/dedicated/${engineId}/metrics`, }); if (!res.ok) { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/layout.tsx index 1c987ac047e..7487db6348e 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/layout.tsx @@ -5,7 +5,6 @@ import { TabPathLinks } from "@/components/ui/tabs"; import { getThirdwebClient } from "@/constants/thirdweb.server"; import { AnnouncementBanner } from "components/notices/AnnouncementBanner"; import { redirect } from "next/navigation"; -import { Badge } from "../../../../../@/components/ui/badge"; import { getValidAccount } from "../../../account/settings/getAccount"; import { getAuthToken, @@ -75,15 +74,6 @@ export default async function TeamLayout(props: { path: `/team/${params.team_slug}/~/analytics`, name: "Analytics", }, - { - path: `/team/${params.team_slug}/~/engine`, - name: ( - - Engines - Legacy - - ), - }, { path: `/team/${params.team_slug}/~/ecosystem`, name: "Ecosystems", diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/components/ProjectSidebarLayout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/components/ProjectSidebarLayout.tsx index 0ad46e07e26..7e4292d9b77 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/components/ProjectSidebarLayout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/components/ProjectSidebarLayout.tsx @@ -12,7 +12,6 @@ import { EngineIcon } from "../../../../(dashboard)/(chain)/components/server/ic import { InsightIcon } from "../../../../(dashboard)/(chain)/components/server/icons/InsightIcon"; import { PayIcon } from "../../../../(dashboard)/(chain)/components/server/icons/PayIcon"; import { SmartAccountIcon } from "../../../../(dashboard)/(chain)/components/server/icons/SmartAccountIcon"; -import { Badge } from "../../../../../../@/components/ui/badge"; import { NebulaIcon } from "../../../../../nebula-app/(app)/icons/NebulaIcon"; export function ProjectSidebarLayout(props: { @@ -63,11 +62,7 @@ export function ProjectSidebarLayout(props: { }, { href: `${layoutPath}/engine`, - label: ( - - Engine Beta - - ), + label: "Engine", icon: EngineIcon, tracking: tracking("engine"), }, diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/analytics-page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/analytics-page.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/analytics-page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/analytics-page.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/filter.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/filter.tsx similarity index 87% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/filter.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/filter.tsx index 8679439c57d..773264f8375 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/filter.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/filter.tsx @@ -5,8 +5,8 @@ import { useResponsiveSearchParams, useSetResponsiveSearchParams, } from "responsive-rsc"; -import { DateRangeSelector } from "../../../../../../../components/analytics/date-range-selector"; -import { IntervalSelector } from "../../../../../../../components/analytics/interval-selector"; +import { DateRangeSelector } from "../../../../../../../../components/analytics/date-range-selector"; +import { IntervalSelector } from "../../../../../../../../components/analytics/interval-selector"; import { getTxAnalyticsFiltersFromSearchParams } from "../lib/utils"; export function TransactionAnalyticsFilter() { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/ftux.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/ftux.client.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/ftux.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/ftux.client.tsx index 49c4ef9f131..cb7e6eb2950 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/ftux.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/ftux.client.tsx @@ -3,7 +3,7 @@ import type { Project } from "@/api/projects"; import { type Step, StepsCard } from "components/dashboard/StepsCard"; import Link from "next/link"; import { useMemo, useState } from "react"; -import { Button } from "../../../../../../../@/components/ui/button"; +import { Button } from "../../../../../../../../@/components/ui/button"; import CreateServerWallet from "../server-wallets/components/create-server-wallet.client"; import type { Wallet } from "../server-wallets/wallet-table/types"; import CreateVaultAccountButton from "../vault/components/create-vault-account.client"; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/send-test-tx.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/send-test-tx.client.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/send-test-tx.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/send-test-tx.client.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/summary.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/summary.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/summary.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/summary.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-chart/tx-chart-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-chart/tx-chart-ui.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-chart/tx-chart-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-chart/tx-chart-ui.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-chart/tx-chart.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-chart/tx-chart.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-chart/tx-chart.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-chart/tx-chart.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-table/tx-table-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-table/tx-table-ui.tsx similarity index 99% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-table/tx-table-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-table/tx-table-ui.tsx index 117ee68f629..cd8daf51e23 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-table/tx-table-ui.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-table/tx-table-ui.tsx @@ -37,7 +37,7 @@ import { useAllChainsData } from "hooks/chains/allChains"; import { ExternalLinkIcon, InfoIcon } from "lucide-react"; import Link from "next/link"; import { useState } from "react"; -import { ChainIconClient } from "../../../../../../../../components/icons/ChainIcon"; +import { ChainIconClient } from "../../../../../../../../../components/icons/ChainIcon"; import type { Wallet } from "../../server-wallets/wallet-table/types"; import type { Transaction, diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-table/tx-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-table/tx-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-table/tx-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-table/tx-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-table/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-table/types.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/analytics/tx-table/types.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/analytics/tx-table/types.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/explorer/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/explorer/page.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/explorer/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/explorer/page.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/layout.tsx similarity index 66% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/layout.tsx index eea3d9a80dd..2d7e709bdeb 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/layout.tsx @@ -1,12 +1,9 @@ -import { getProject } from "@/api/projects"; -import { getTeamBySlug } from "@/api/team"; import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; import { TabPathLinks } from "@/components/ui/tabs"; import { THIRDWEB_ENGINE_CLOUD_URL } from "@/constants/env"; -import { CloudIcon } from "lucide-react"; import Link from "next/link"; -import { redirect } from "next/navigation"; -import { Button } from "../../../../../../@/components/ui/button"; +import { EngineIcon } from "../../../../../(dashboard)/(chain)/components/server/icons/EngineIcon"; export default async function Page(props: { params: Promise<{ team_slug: string; project_slug: string }>; @@ -14,25 +11,8 @@ export default async function Page(props: { }) { const { team_slug, project_slug } = await props.params; - const [team, project] = await Promise.all([ - getTeamBySlug(team_slug), - getProject(team_slug, project_slug), - ]); - - if (!team) { - redirect("/team"); - } - - if (!project) { - redirect(`/team/${team_slug}`); - } - return ( - + {props.children} ); @@ -41,10 +21,10 @@ export default async function Page(props: { function TransactionsLayout(props: { projectSlug: string; teamSlug: string; - clientId: string; children: React.ReactNode; }) { - const engineLayoutSlug = `/team/${props.teamSlug}/${props.projectSlug}/engine`; + const engineBaseSlug = `/team/${props.teamSlug}/${props.projectSlug}/engine`; + const engineLayoutSlug = `${engineBaseSlug}/cloud`; return (
@@ -54,8 +34,14 @@ function TransactionsLayout(props: {
-

- Engine +

+ Engine{" "} + + Cloud +

{THIRDWEB_ENGINE_CLOUD_URL} - - - Cloud -
- - + +
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/lib/analytics.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/lib/analytics.ts similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/lib/analytics.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/lib/analytics.ts index df00470dc4c..05020cfeda5 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/lib/analytics.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/lib/analytics.ts @@ -1,6 +1,6 @@ import { THIRDWEB_ENGINE_CLOUD_URL } from "@/constants/env"; -import type { TransactionStats } from "../../../../../../../types/analytics"; -import { getAuthToken } from "../../../../../api/lib/getAuthToken"; +import type { TransactionStats } from "../../../../../../../../types/analytics"; +import { getAuthToken } from "../../../../../../api/lib/getAuthToken"; // Define the structure of the data we expect back from our fetch function export type TransactionSummaryData = { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/lib/utils.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/lib/utils.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/lib/utils.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/lib/utils.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/lib/vault.client.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/lib/vault.client.ts similarity index 98% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/lib/vault.client.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/lib/vault.client.ts index f66f308ab93..225f87bed3c 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/lib/vault.client.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/lib/vault.client.ts @@ -7,7 +7,7 @@ import { createAccessToken, createVaultClient, } from "@thirdweb-dev/vault-sdk"; -import { updateProjectClient } from "../../../../../../../@3rdweb-sdk/react/hooks/useApi"; +import { updateProjectClient } from "../../../../../../../../@3rdweb-sdk/react/hooks/useApi"; const SERVER_WALLET_ACCESS_TOKEN_PURPOSE = "Access Token for All Server Wallets"; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/page.tsx new file mode 100644 index 00000000000..cce8142a363 --- /dev/null +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/page.tsx @@ -0,0 +1,103 @@ +import { getProject } from "@/api/projects"; +import { THIRDWEB_VAULT_URL } from "@/constants/env"; +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"; +import { + type TransactionSummaryData, + getTransactionAnalyticsSummary, +} from "./lib/analytics"; +import type { Wallet } from "./server-wallets/wallet-table/types"; + +export default async function TransactionsAnalyticsPage(props: { + params: Promise<{ team_slug: string; project_slug: string }>; + searchParams: Promise<{ + from?: string | string[] | undefined; + to?: string | string[] | undefined; + interval?: string | string[] | undefined; + }>; +}) { + const [params, searchParams, authToken] = await Promise.all([ + props.params, + props.searchParams, + getAuthToken(), + ]); + + if (!authToken) { + notFound(); + } + + const [vaultClient, project] = await Promise.all([ + createVaultClient({ + baseUrl: THIRDWEB_VAULT_URL, + }).catch(() => undefined), + getProject(params.team_slug, params.project_slug), + ]); + + if (!project) { + redirect(`/team/${params.team_slug}`); + } + + if (!vaultClient) { + return
Error: Failed to connect to Vault
; + } + + const projectEngineCloudService = project.services.find( + (service) => service.name === "engineCloud", + ); + + const managementAccessToken = + projectEngineCloudService?.managementAccessToken; + + const eoas = managementAccessToken + ? await listEoas({ + client: vaultClient, + request: { + auth: { + accessToken: managementAccessToken, + }, + options: {}, + }, + }) + : { data: { items: [] }, error: null, success: true }; + + const wallets = eoas.data?.items as Wallet[] | undefined; + + let initialData: TransactionSummaryData | undefined; + if (wallets && wallets.length > 0) { + const summary = await getTransactionAnalyticsSummary({ + teamId: project.teamId, + clientId: project.publishableKey, + }).catch(() => undefined); + initialData = summary; + } + const hasTransactions = initialData ? initialData.totalCount > 0 : false; + + return ( +
+ + {hasTransactions && ( + + )} +
+ +
+ ); +} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/components/create-server-wallet.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/components/create-server-wallet.client.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/components/create-server-wallet.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/components/create-server-wallet.client.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/components/try-it-out.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/components/try-it-out.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/components/try-it-out.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/components/try-it-out.tsx index e4828b37967..f855c6ed92b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/components/try-it-out.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/components/try-it-out.tsx @@ -1,10 +1,10 @@ "use client"; +import { Button } from "@/components/ui/button"; +import { CodeClient } from "@/components/ui/code/code.client"; +import { TabButtons } from "@/components/ui/tabs"; import { THIRDWEB_ENGINE_CLOUD_URL } from "@/constants/env"; import Link from "next/link"; import { useState } from "react"; -import { Button } from "../../../../../../../../@/components/ui/button"; -import { CodeClient } from "../../../../../../../../@/components/ui/code/code.client"; -import { TabButtons } from "../../../../../../../../@/components/ui/tabs"; import type { Wallet } from "../wallet-table/types"; export function TryItOut(props: { @@ -94,22 +94,12 @@ export function TryItOut(props: {
- {props.wallet && ( - - )}
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/page.tsx similarity index 92% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/page.tsx index 368791001a8..5e853b4d840 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/page.tsx @@ -1,8 +1,8 @@ import { getProject } from "@/api/projects"; import { createVaultClient, listEoas } from "@thirdweb-dev/vault-sdk"; import { notFound } from "next/navigation"; -import { THIRDWEB_VAULT_URL } from "../../../../../../../@/constants/env"; -import { getAuthToken } from "../../../../../api/lib/getAuthToken"; +import { THIRDWEB_VAULT_URL } from "../../../../../../../../@/constants/env"; +import { getAuthToken } from "../../../../../../api/lib/getAuthToken"; import { TryItOut } from "./components/try-it-out"; 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]/engine/server-wallets/wallet-table/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/wallet-table/types.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/wallet-table/types.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/wallet-table/types.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/wallet-table/wallet-table-ui.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx similarity index 94% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/wallet-table/wallet-table-ui.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx index f017d1f283e..cc3a5b34c21 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/wallet-table/wallet-table-ui.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx @@ -2,6 +2,9 @@ import type { Project } from "@/api/projects"; import { WalletAddress } from "@/components/blocks/wallet-address"; +import { Badge } from "@/components/ui/badge"; +import { Skeleton } from "@/components/ui/skeleton"; +import { Switch } from "@/components/ui/switch"; import { Table, TableBody, @@ -21,10 +24,7 @@ import { DEFAULT_ACCOUNT_FACTORY_V0_7, predictSmartAccountAddress, } from "thirdweb/wallets/smart"; -import { Badge } from "../../../../../../../../@/components/ui/badge"; -import { Skeleton } from "../../../../../../../../@/components/ui/skeleton"; -import { Switch } from "../../../../../../../../@/components/ui/switch"; -import { useV5DashboardChain } from "../../../../../../../../lib/v5-adapter"; +import { useV5DashboardChain } from "../../../../../../../../../lib/v5-adapter"; import CreateServerWallet from "../components/create-server-wallet.client"; import type { Wallet } from "./types"; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/wallet-table/wallet-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/wallet-table/wallet-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/server-wallets/wallet-table/wallet-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/server-wallets/wallet-table/wallet-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/tx/[id]/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/tx/[id]/layout.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/tx/[id]/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/tx/[id]/layout.tsx index f12a7f728bd..bfa7963dd88 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/tx/[id]/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/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]/engine/tx/[id]/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/tx/[id]/page.tsx similarity index 84% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/tx/[id]/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/tx/[id]/page.tsx index 365e84a1215..68843aa1313 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/tx/[id]/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/tx/[id]/page.tsx @@ -1,6 +1,6 @@ import { notFound, redirect } from "next/navigation"; -import { getProject } from "../../../../../../../../@/api/projects"; -import { CodeServer } from "../../../../../../../../@/components/ui/code/code.server"; +import { getProject } from "../../../../../../../../../@/api/projects"; +import { CodeServer } from "../../../../../../../../../@/components/ui/code/code.server"; import { getSingleTransaction } from "../../lib/analytics"; export default async function TransactionPage({ diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/components/create-vault-account.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/components/create-vault-account.client.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/components/create-vault-account.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/components/create-vault-account.client.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/components/key-management.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/components/key-management.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/components/key-management.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/components/key-management.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/components/list-access-tokens.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/components/list-access-tokens.client.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/components/list-access-tokens.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/components/list-access-tokens.client.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/components/rotate-admin-key.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/components/rotate-admin-key.client.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/components/rotate-admin-key.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/components/rotate-admin-key.client.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/page.tsx similarity index 92% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/page.tsx index 149cb1dfa24..02857a44b72 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/vault/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/cloud/vault/page.tsx @@ -1,6 +1,6 @@ import { getProject } from "@/api/projects"; import { notFound } from "next/navigation"; -import { getAuthToken } from "../../../../../api/lib/getAuthToken"; +import { getAuthToken } from "../../../../../../api/lib/getAuthToken"; import { KeyManagement } from "./components/key-management"; export default async function VaultPage(props: { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/EngineFooterCard.stories.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/EngineFooterCard.stories.tsx similarity index 95% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/EngineFooterCard.stories.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/EngineFooterCard.stories.tsx index 22a678e32f1..c4d3b3f55c2 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/EngineFooterCard.stories.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/EngineFooterCard.stories.tsx @@ -6,6 +6,7 @@ const meta = { component: EngineFooterCard, args: { team_slug: "demo-team", + project_slug: "demo-project", }, decorators: [ (Story) => ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/_components.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/_components.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/_components.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/_components.tsx index 8c6680521a8..0dc6e43b7a1 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/_components.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/_components.tsx @@ -27,8 +27,8 @@ export function ImportEngineLink(props: { ); } -function EngineInfoSection(props: { team_slug: string }) { - const engineLinkPrefix = `/team/${props.team_slug}/~/engine`; +function EngineInfoSection(props: { team_slug: string; project_slug: string }) { + const engineLinkPrefix = `/team/${props.team_slug}/${props.project_slug}/engine/dedicated`; return (
@@ -148,6 +148,7 @@ function CloudHostedEngineSection(props: { export function EngineFooterCard(props: { teamPlan: Team["billingPlan"]; team_slug: string; + project_slug: string; }) { return (
@@ -161,7 +162,10 @@ export function EngineFooterCard(props: { )} - +
); } diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.stories.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/import/EngineImportPage.stories.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.stories.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/import/EngineImportPage.stories.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/import/EngineImportPage.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/import/EngineImportPage.tsx index ea9f330bc2b..7854d32fc98 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/import/EngineImportPage.tsx @@ -55,6 +55,7 @@ async function importEngine({ export function EngineImportCard(props: { prefillImportUrl: string | undefined; teamSlug: string; + projectSlug: string; }) { const router = useDashboardRouter(); @@ -63,7 +64,9 @@ export function EngineImportCard(props: { prefillImportUrl={props.prefillImportUrl} importEngine={async (params) => { await importEngine({ ...params, teamIdOrSlug: props.teamSlug }); - router.push(`/team/${props.teamSlug}/~/engine`); + router.push( + `/team/${props.teamSlug}/${props.projectSlug}/engine/dedicated`, + ); }} /> ); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/import/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/import/page.tsx similarity index 85% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/import/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/import/page.tsx index 89d16708101..bc9b371bdde 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/import/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/import/page.tsx @@ -1,7 +1,7 @@ import { EngineImportCard } from "./EngineImportPage"; export default async function Page(props: { - params: Promise<{ team_slug: string }>; + params: Promise<{ team_slug: string; project_slug: string }>; searchParams: Promise<{ importUrl?: string | string[]; }>; @@ -21,6 +21,7 @@ export default async function Page(props: {
); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/layout.tsx similarity index 72% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/layout.tsx index 18f0eebd25e..645756a5376 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/layout.tsx @@ -3,18 +3,20 @@ import { SidebarLayout } from "@/components/blocks/SidebarLayout"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; -import { CloudIcon } from "lucide-react"; +import { DatabaseIcon } from "lucide-react"; import Link from "next/link"; +import { EngineIcon } from "../../../../../../(dashboard)/(chain)/components/server/icons/EngineIcon"; import { ImportEngineLink } from "./_components"; export default async function Layout(props: { params: Promise<{ team_slug: string; + project_slug: string; }>; children: React.ReactNode; }) { const params = await props.params; - const linkPrefix = `/team/${params.team_slug}/~/engine`; + const linkPrefix = `/team/${params.team_slug}/${params.project_slug}/engine/dedicated`; const sidebarLinks: SidebarLink[] = [ { label: "Engine Instances", @@ -28,18 +30,22 @@ export default async function Layout(props: { ]; return ( -
+
{/* header */}

- Engines Legacy + Engine{" "} + + Dedicated +

- {/* TODO (cloud): add link to Engine Cloud blog post */} - The latest version of Engine has moved inside projects. Your - legacy engines will remain available here. + Manage your deployed Engine instances

@@ -51,7 +57,10 @@ export default async function Layout(props: {
- +
@@ -65,10 +74,11 @@ export default async function Layout(props: { function EngineLegacyBannerUI(props: { teamSlug: string; + projectSlug: string; }) { return ( - + Engine Cloud (Beta)
@@ -91,8 +101,12 @@ function EngineLegacyBannerUI(props: { > - - + +
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.stories.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/overview/engine-instances-table.stories.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.stories.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/overview/engine-instances-table.stories.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/overview/engine-instances-table.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/overview/engine-instances-table.tsx index 71da032abfa..317b69fcfe3 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/overview/engine-instances-table.tsx @@ -83,6 +83,7 @@ type RemovedEngineFromDashboard = ( export function EngineInstancesTable(props: { teamSlug: string; + projectSlug: string; instances: EngineInstance[]; engineLinkPrefix: string; teamPlan: Team["billingPlan"]; @@ -95,6 +96,7 @@ export function EngineInstancesTable(props: { instances={props.instances} engineLinkPrefix={props.engineLinkPrefix} teamSlug={props.teamSlug} + projectSlug={props.projectSlug} deleteCloudHostedEngine={async (params) => { await deleteCloudHostedEngine(params); router.refresh(); @@ -119,6 +121,7 @@ export function EngineInstancesTableUI(props: { removeEngineFromDashboard: RemovedEngineFromDashboard; teamPlan: Team["billingPlan"]; teamSlug: string; + projectSlug: string; }) { return (
@@ -127,14 +130,19 @@ export function EngineInstancesTableUI(props: { {props.instances.length === 0 ? ( - + ) : ( - Engine Instance - Actions + Engine Instance + Version + Actions @@ -177,7 +185,7 @@ function EngineInstanceRow(props: { >
-
+
+ + v2 + - + Import self-hosted Engine diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/overview/engine-list.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/overview/engine-list.tsx similarity index 68% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/overview/engine-list.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/overview/engine-list.tsx index 0c0a394cffa..7460dfb51e2 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/overview/engine-list.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/overview/engine-list.tsx @@ -5,22 +5,28 @@ import { EngineInstancesTable } from "./engine-instances-table"; export const EngineInstancesList = (props: { team_slug: string; + project_slug: string; instances: EngineInstance[]; teamPlan: Team["billingPlan"]; }) => { - const engineLinkPrefix = `/team/${props.team_slug}/~/engine`; + const engineLinkPrefix = `/team/${props.team_slug}/${props.project_slug}/engine/dedicated`; return (
- +
); }; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/page.tsx similarity index 79% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/page.tsx index ee1946e0cd5..02e221729f7 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(general)/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(general)/page.tsx @@ -8,6 +8,7 @@ import { EngineInstancesList } from "./overview/engine-list"; export default async function Page(props: { params: Promise<{ team_slug: string; + project_slug: string; }>; searchParams: Promise<{ importUrl?: string; @@ -20,7 +21,7 @@ export default async function Page(props: { if (searchParams.importUrl) { redirect( - `/team/${params.team_slug}/~/engine/import?importUrl=${searchParams.importUrl}`, + `/team/${params.team_slug}/${params.project_slug}/engine/dedicated/import?importUrl=${searchParams.importUrl}`, ); } @@ -30,7 +31,9 @@ export default async function Page(props: { ]); if (!authToken) { - loginRedirect(`/team/${params.team_slug}/~/engine`); + loginRedirect( + `/team/${params.team_slug}/${params.project_slug}/engine/dedicated`, + ); } if (!team) { @@ -45,6 +48,7 @@ export default async function Page(props: { return ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/EngineErrorPage.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/EngineErrorPage.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/EngineErrorPage.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/EngineErrorPage.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/EnginePageLayout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/EnginePageLayout.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/EnginePageLayout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/EnginePageLayout.tsx index b8c7de2ef93..53c85d51209 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/EnginePageLayout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/EnginePageLayout.tsx @@ -51,9 +51,10 @@ const sidebarLinkMeta: Array<{ pathId: string; label: string }> = [ export function EngineSidebarLayout(props: { engineId: string; teamSlug: string; + projectSlug: string; children: React.ReactNode; }) { - const rootPath = `/team/${props.teamSlug}/~/engine`; + const rootPath = `/team/${props.teamSlug}/${props.projectSlug}/engine/dedicated`; const links: SidebarLink[] = sidebarLinkMeta.map((linkMeta) => { return { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/EnsureEnginePermission.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/EnsureEnginePermission.tsx similarity index 91% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/EnsureEnginePermission.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/EnsureEnginePermission.tsx index 1e3bfc6bd63..674f7afb817 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/EnsureEnginePermission.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/EnsureEnginePermission.tsx @@ -1,9 +1,9 @@ "use client"; +import { GenericLoadingPage } from "@/components/blocks/skeletons/GenericLoadingPage"; import type { EngineInstance } from "@3rdweb-sdk/react/hooks/useEngine"; import { useQuery } from "@tanstack/react-query"; import type React from "react"; -import GenericLoadingPage from "../../../../ecosystem/loading"; import { getEngineAccessPermission } from "../../../_utils/getEngineAccessPermission"; import { EngineErrorPage } from "./EngineErrorPage"; @@ -13,10 +13,11 @@ export function EnsureEnginePermission(props: { authToken: string; children: React.ReactNode; teamSlug: string; + projectSlug: string; instance: EngineInstance; }) { const { instance } = props; - const rootPath = `/team/${props.teamSlug}/~/engine`; + const rootPath = `/team/${props.teamSlug}/${props.projectSlug}/engine/dedicated`; const permissionQuery = useQuery({ queryKey: [ diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/version.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/version.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/_components/version.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/_components/version.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/access-tokens-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/access-tokens-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/access-tokens-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/access-tokens-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-access-token-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/add-access-token-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-access-token-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/add-access-token-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-keypair-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/add-keypair-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-keypair-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/add-keypair-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/engine-access-tokens.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/engine-access-tokens.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/engine-access-tokens.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/engine-access-tokens.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/keypairs-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/keypairs-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/keypairs-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/components/keypairs-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/page.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/page.tsx index f1dd2edd5d3..5d584ca1846 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/access-tokens/page.tsx @@ -7,6 +7,7 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/components/add-admin-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/components/add-admin-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/components/add-admin-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/components/add-admin-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/components/admins-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/components/admins-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/components/admins-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/components/admins-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/components/engine-admins.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/components/engine-admins.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/components/engine-admins.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/components/engine-admins.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/page.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/page.tsx index e3d235d774b..b62cfee33f2 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/admins/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/admins/page.tsx @@ -7,6 +7,7 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/EngineAlertDialogForm.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/EngineAlertDialogForm.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/EngineAlertDialogForm.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/EngineAlertDialogForm.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/EngineAlertsPage.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/EngineAlertsPage.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/EngineAlertsPage.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/EngineAlertsPage.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/EngineDeleteAlertModal.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/EngineDeleteAlertModal.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/EngineDeleteAlertModal.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/EngineDeleteAlertModal.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/ManageEngineAlerts.stories.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/ManageEngineAlerts.stories.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/ManageEngineAlerts.stories.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/ManageEngineAlerts.stories.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/ManageEngineAlerts.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/ManageEngineAlerts.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/ManageEngineAlerts.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/ManageEngineAlerts.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/RecentEngineAlerts.stories.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/RecentEngineAlerts.stories.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/RecentEngineAlerts.stories.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/RecentEngineAlerts.stories.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/RecentEngineAlerts.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/RecentEngineAlerts.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/components/RecentEngineAlerts.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/components/RecentEngineAlerts.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/page.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/page.tsx index 0a0329ac19a..f5465a0614e 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/alerts/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/alerts/page.tsx @@ -7,6 +7,7 @@ export default async function Page(props: EngineInstancePageProps) { const { instance } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/circle-config.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/circle-config.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/circle-config.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/circle-config.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/cors.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/cors.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/cors.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/cors.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/engine-configuration.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/engine-configuration.tsx similarity index 82% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/engine-configuration.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/engine-configuration.tsx index 8c64552a3be..66c846fbc2e 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/engine-configuration.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/engine-configuration.tsx @@ -9,12 +9,14 @@ import { EngineSystem } from "./system"; interface EngineConfigurationProps { instance: EngineInstance; teamSlug: string; + projectSlug: string; authToken: string; } export const EngineConfiguration: React.FC = ({ instance, teamSlug, + projectSlug, authToken, }) => { return ( @@ -22,6 +24,7 @@ export const EngineConfiguration: React.FC = ({ @@ -29,7 +32,11 @@ export const EngineConfiguration: React.FC = ({ instanceUrl={instance.url} authToken={authToken} /> - +
); }; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/engine-wallet-config.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/engine-wallet-config.tsx similarity index 96% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/engine-wallet-config.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/engine-wallet-config.tsx index 8bb3431cf02..3ec13885927 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/engine-wallet-config.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/engine-wallet-config.tsx @@ -23,12 +23,14 @@ import { LocalConfig } from "./local-config"; interface EngineWalletConfigProps { instance: EngineInstance; teamSlug: string; + projectSlug: string; authToken: string; } export const EngineWalletConfig: React.FC = ({ instance, teamSlug, + projectSlug, authToken, }) => { const { data: walletConfig } = useEngineWalletConfig({ @@ -72,7 +74,7 @@ export const EngineWalletConfig: React.FC = ({

Create backend wallets on the{" "} Overview diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/ip-allowlist.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/ip-allowlist.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/ip-allowlist.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/ip-allowlist.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/kms-aws-config.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/kms-aws-config.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/kms-aws-config.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/kms-aws-config.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/kms-gcp-config.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/kms-gcp-config.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/kms-gcp-config.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/kms-gcp-config.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/local-config.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/local-config.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/local-config.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/local-config.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/system.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/system.tsx similarity index 84% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/system.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/system.tsx index b348ce335ac..64705289f15 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/components/system.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/components/system.tsx @@ -7,14 +7,20 @@ import { interface EngineSystemProps { instance: EngineInstance; teamIdOrSlug: string; + projectSlug: string; } export const EngineSystem: React.FC = ({ instance, teamIdOrSlug, + projectSlug, }) => { const healthQuery = useEngineSystemHealth(instance.url); - const metricsQuery = useEngineSystemMetrics(instance.id, teamIdOrSlug); + const metricsQuery = useEngineSystemMetrics( + instance.id, + teamIdOrSlug, + projectSlug, + ); if (!healthQuery.data) { return null; } diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/page.tsx similarity index 88% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/page.tsx index 4480cb06e27..5d36e68e08b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/configuration/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/configuration/page.tsx @@ -7,12 +7,14 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ( ); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/components/add-contract-subscription-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/components/add-contract-subscription-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/components/add-contract-subscription-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/components/add-contract-subscription-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/components/contract-subscriptions-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/components/contract-subscriptions-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/components/contract-subscriptions-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/components/contract-subscriptions-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/components/engine-contract-subscription.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/components/engine-contract-subscription.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/components/engine-contract-subscription.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/components/engine-contract-subscription.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/page.tsx similarity index 94% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/page.tsx index 0e41b54826c..a7bbc8a3d67 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/contract-subscriptions/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/contract-subscriptions/page.tsx @@ -7,6 +7,7 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/explorer/components/engine-explorer.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/explorer/components/engine-explorer.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/explorer/components/engine-explorer.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/explorer/components/engine-explorer.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/explorer/components/swagger-ui.css b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/explorer/components/swagger-ui.css similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/explorer/components/swagger-ui.css rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/explorer/components/swagger-ui.css diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/explorer/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/explorer/page.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/explorer/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/explorer/page.tsx index 691b755db0f..4f265324ab9 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/explorer/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/explorer/page.tsx @@ -7,6 +7,7 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/layout.tsx similarity index 91% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/layout.tsx index 99850d1ad6d..6ed59afe4ce 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/layout.tsx @@ -20,6 +20,7 @@ import { EngineVersionBadge } from "./_components/version"; export default async function Layout(props: { params: Promise<{ team_slug: string; + project_slug: string; engineId: string; }>; children: React.ReactNode; @@ -29,7 +30,9 @@ export default async function Layout(props: { const authToken = await getAuthToken(); if (!authToken) { - loginRedirect(`/team/${params.team_slug}/~/engine/${params.engineId}`); + loginRedirect( + `/team/${params.team_slug}/${params.project_slug}/engine/dedicated/${params.engineId}`, + ); } const instance = await getEngineInstance({ @@ -39,13 +42,14 @@ export default async function Layout(props: { accountId: account.id, }); - const engineRootLayoutPath = `/team/${params.team_slug}/~/engine`; + const engineRootLayoutPath = `/team/${params.team_slug}/${params.project_slug}/engine/dedicated`; if (!instance) { return ( Engine Instance Not Found @@ -66,9 +70,11 @@ export default async function Layout(props: { = ({ instance, teamSlug, + projectSlug, authToken, }) => { - const systemMetricsQuery = useEngineSystemMetrics(instance.id, teamSlug); + const systemMetricsQuery = useEngineSystemMetrics( + instance.id, + teamSlug, + projectSlug, + ); const queueMetricsQuery = useEngineQueueMetrics({ authToken, instanceUrl: instance.url, @@ -44,7 +50,7 @@ export const EngineSystemMetrics: React.FC = ({ Upgrade to a{" "} ); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/backend-wallets-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/backend-wallets-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/backend-wallets-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/backend-wallets-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/create-backend-wallet-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/create-backend-wallet-button.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/create-backend-wallet-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/create-backend-wallet-button.tsx index 5c5c19764dd..a9383b3a093 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/create-backend-wallet-button.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/create-backend-wallet-button.tsx @@ -43,12 +43,13 @@ interface CreateBackendWalletButtonProps { instance: EngineInstance; walletConfig: WalletConfigResponse; teamSlug: string; + projectSlug: string; authToken: string; } export const CreateBackendWalletButton: React.FC< CreateBackendWalletButtonProps -> = ({ instance, walletConfig, teamSlug, authToken }) => { +> = ({ instance, walletConfig, teamSlug, projectSlug, authToken }) => { const { isSupported: supportsMultipleWalletTypes } = useHasEngineFeature( instance.url, "HETEROGENEOUS_WALLET_TYPES", @@ -192,7 +193,7 @@ export const CreateBackendWalletButton: React.FC< Provide your credentials on the{" "} Configuration @@ -249,7 +250,7 @@ export const CreateBackendWalletButton: React.FC< The ID of the Circle credential to use for this wallet. You can find this in the{" "} Wallet Credentials diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/engine-overview.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/engine-overview.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/engine-overview.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/engine-overview.tsx index 5e53bdd1c20..3a57117e23f 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/engine-overview.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/engine-overview.tsx @@ -19,12 +19,14 @@ import { TransactionCharts, TransactionsTable } from "./transactions-table"; interface EngineOverviewProps { instance: EngineInstance; teamSlug: string; + projectSlug: string; authToken: string; } export const EngineOverview: React.FC = ({ instance, teamSlug, + projectSlug, authToken, }) => { const client = useThirdwebClient(); @@ -34,6 +36,7 @@ export const EngineOverview: React.FC = ({ @@ -52,10 +55,11 @@ export const EngineOverview: React.FC = ({ function BackendWalletsSection(props: { instance: EngineInstance; teamSlug: string; + projectSlug: string; authToken: string; client: ThirdwebClient; }) { - const { instance, teamSlug, authToken } = props; + const { instance, teamSlug, projectSlug, authToken } = props; const activeWalletChain = useActiveWalletChain(); const [_chainId, setChainId] = useState(); const chainId = _chainId || activeWalletChain?.id || 1; @@ -85,7 +89,7 @@ function BackendWalletsSection(props: {

Set up other wallet types from the{" "} Configuration {" "} @@ -108,12 +112,14 @@ function BackendWalletsSection(props: { instance={instance} walletConfig={walletConfig} teamSlug={teamSlug} + projectSlug={projectSlug} authToken={authToken} />

diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/import-backend-wallet-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/import-backend-wallet-button.tsx similarity index 98% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/import-backend-wallet-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/import-backend-wallet-button.tsx index cd6f8243187..f1b0a62e3e6 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/import-backend-wallet-button.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/import-backend-wallet-button.tsx @@ -43,12 +43,13 @@ interface ImportBackendWalletButtonProps { instance: EngineInstance; walletConfig: WalletConfigResponse; teamSlug: string; + projectSlug: string; authToken: string; } export const ImportBackendWalletButton: React.FC< ImportBackendWalletButtonProps -> = ({ instance, walletConfig, teamSlug, authToken }) => { +> = ({ instance, walletConfig, teamSlug, projectSlug, authToken }) => { const { isSupported: supportsMultipleWalletTypes } = useHasEngineFeature( instance.url, "HETEROGENEOUS_WALLET_TYPES", @@ -196,7 +197,7 @@ export const ImportBackendWalletButton: React.FC< Provide your credentials on the{" "} Configuration diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/transaction-timeline.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/transaction-timeline.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/transaction-timeline.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/transaction-timeline.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/transactions-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/transactions-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/transactions-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/transactions-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/utils.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/utils.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/overview/components/utils.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/utils.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/page.tsx similarity index 88% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/page.tsx index bd6ec62012c..b3bde12f86a 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/page.tsx @@ -7,12 +7,14 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ( ); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/components/add-relayer-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/components/add-relayer-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/components/add-relayer-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/components/add-relayer-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/components/engine-relayer.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/components/engine-relayer.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/components/engine-relayer.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/components/engine-relayer.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/components/relayers-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/components/relayers-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/components/relayers-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/components/relayers-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/page.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/page.tsx index 3450919eb7e..c619554fda7 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/relayers/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/relayers/page.tsx @@ -7,6 +7,7 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/types.ts similarity index 81% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/types.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/types.ts index 5f004e8d3f8..40e7e65acc9 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/types.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/types.ts @@ -1,6 +1,7 @@ export type EngineInstancePageProps = { params: Promise<{ team_slug: string; + project_slug: string; engineId: string; }>; }; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/create-wallet-credential-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/create-wallet-credential-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/create-wallet-credential-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/create-wallet-credential-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/credential-form.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/credential-form.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/credential-form.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/credential-form.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/credential-type-fields/circle.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/credential-type-fields/circle.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/credential-type-fields/circle.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/credential-type-fields/circle.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/edit-wallet-credential-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/edit-wallet-credential-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/edit-wallet-credential-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/edit-wallet-credential-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/types.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/types.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/types.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/wallet-credentials-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/wallet-credentials-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/wallet-credentials-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/wallet-credentials-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/wallet-credentials.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/wallet-credentials.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/components/wallet-credentials.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/components/wallet-credentials.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/page.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/page.tsx index 21470354729..6b27e92d629 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/wallet-credentials/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/wallet-credentials/page.tsx @@ -7,6 +7,7 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/components/add-webhook-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/components/add-webhook-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/components/add-webhook-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/components/add-webhook-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/components/engine-webhooks.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/components/engine-webhooks.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/components/engine-webhooks.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/components/engine-webhooks.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/components/webhooks-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/components/webhooks-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/components/webhooks-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/components/webhooks-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/page.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/page.tsx index 4f6faccb348..d7afe756224 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/webhooks/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/webhooks/page.tsx @@ -7,6 +7,7 @@ export default async function Page(props: EngineInstancePageProps) { const { instance, authToken } = await engineInstancePageHandler({ engineId: params.engineId, teamSlug: params.team_slug, + projectSlug: params.project_slug, }); return ; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineAccessPermission.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineAccessPermission.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineAccessPermission.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineAccessPermission.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineInstance.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineInstance.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineInstance.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineInstance.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineInstancePageMeta.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineInstancePageMeta.ts similarity index 86% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineInstancePageMeta.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineInstancePageMeta.ts index 5b3a787d2d2..c5221e9bb24 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineInstancePageMeta.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineInstancePageMeta.ts @@ -6,9 +6,10 @@ import { getEngineInstance } from "./getEngineInstance"; export async function engineInstancePageHandler(params: { teamSlug: string; + projectSlug: string; engineId: string; }) { - const pagePath = `/team/${params.teamSlug}/~/engine/${params.engineId}/access-tokens`; + const pagePath = `/team/${params.teamSlug}/${params.projectSlug}/engine/dedicated/${params.engineId}/access-tokens`; const [authToken, account] = await Promise.all([ getAuthToken(), diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineInstances.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineInstances.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/engine/_utils/getEngineInstances.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/_utils/getEngineInstances.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/loading.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/loading.tsx new file mode 100644 index 00000000000..ddbf6bd8ca7 --- /dev/null +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/loading.tsx @@ -0,0 +1,5 @@ +import { GenericLoadingPage } from "@/components/blocks/skeletons/GenericLoadingPage"; + +export default function Loading() { + return ; +} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/page.tsx index eb332671b6c..3f64aa75892 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/engine/page.tsx @@ -1,17 +1,7 @@ import { getProject } from "@/api/projects"; -import { getTeamBySlug } from "@/api/team"; -import { THIRDWEB_VAULT_URL } from "@/constants/env"; -import { createVaultClient, listEoas } from "@thirdweb-dev/vault-sdk"; -import { notFound, redirect } from "next/navigation"; +import { 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"; -import { - type TransactionSummaryData, - getTransactionAnalyticsSummary, -} from "./lib/analytics"; -import type { Wallet } from "./server-wallets/wallet-table/types"; +import { getEngineInstances } from "./dedicated/_utils/getEngineInstances"; export default async function TransactionsAnalyticsPage(props: { params: Promise<{ team_slug: string; project_slug: string }>; @@ -21,86 +11,39 @@ export default async function TransactionsAnalyticsPage(props: { interval?: string | string[] | undefined; }>; }) { - const [params, searchParams, authToken] = await Promise.all([ - props.params, - props.searchParams, - getAuthToken(), - ]); + const { team_slug, project_slug } = await props.params; + const authToken = await getAuthToken(); if (!authToken) { - notFound(); + redirect("/team"); } - const [team, project] = await Promise.all([ - getTeamBySlug(params.team_slug), - getProject(params.team_slug, params.project_slug), + const [project, engineInstances] = await Promise.all([ + getProject(team_slug, project_slug), + getEngineInstances({ authToken, teamIdOrSlug: team_slug }), ]); - if (!team) { - redirect("/team"); - } - if (!project) { - redirect(`/team/${params.team_slug}`); + redirect(`/team/${team_slug}`); } const projectEngineCloudService = project.services.find( (service) => service.name === "engineCloud", ); - const vaultClient = await createVaultClient({ - baseUrl: THIRDWEB_VAULT_URL, - }); - const managementAccessToken = projectEngineCloudService?.managementAccessToken; - const eoas = managementAccessToken - ? await listEoas({ - client: vaultClient, - request: { - auth: { - accessToken: managementAccessToken, - }, - options: {}, - }, - }) - : { data: { items: [] }, error: null, success: true }; - - const wallets = eoas.data?.items as Wallet[] | undefined; + // if we have a management access token, redirect to the engine cloud layout + if (managementAccessToken) { + redirect(`/team/${team_slug}/${project_slug}/engine/cloud`); + } - let initialData: TransactionSummaryData | undefined; - if (wallets && wallets.length > 0) { - const summary = await getTransactionAnalyticsSummary({ - teamId: project.teamId, - clientId: project.publishableKey, - }).catch(() => undefined); - initialData = summary; + // if we have any legacy engine instances, redirect to the legacy engine layout + if (engineInstances.data?.length && engineInstances.data.length > 0) { + redirect(`/team/${team_slug}/${project_slug}/engine/dedicated`); } - const hasTransactions = initialData ? initialData.totalCount > 0 : false; - return ( -
- - {hasTransactions && ( - - )} -
- -
- ); + // otherwise, redirect to the engine cloud layout + redirect(`/team/${team_slug}/${project_slug}/engine/cloud`); } diff --git a/apps/dashboard/src/app/(app)/team/components/TeamHeader/TeamAndProjectSelectorPopoverButton.tsx b/apps/dashboard/src/app/(app)/team/components/TeamHeader/TeamAndProjectSelectorPopoverButton.tsx index 1ac05bd0397..d38b57f9821 100644 --- a/apps/dashboard/src/app/(app)/team/components/TeamHeader/TeamAndProjectSelectorPopoverButton.tsx +++ b/apps/dashboard/src/app/(app)/team/components/TeamHeader/TeamAndProjectSelectorPopoverButton.tsx @@ -38,10 +38,15 @@ export function TeamAndProjectSelectorPopoverButton(props: TeamSwitcherProps) { return null; } - const projectsToShow = teamsAndProjects.find( + const teamProjects = teamsAndProjects.find( (x) => x.team.slug === projectsToShowOfTeam.slug, )?.projects; + // @TODO: HACK hide Engine projects from the list. + const projectsToShow = teamProjects?.filter( + (project) => !project.name.startsWith("Cloud-hosted Engine ("), + ); + return (