From 2d8fde089516a78430b4321583f515b025a51e40 Mon Sep 17 00:00:00 2001 From: Jonas Daniels Date: Mon, 3 Mar 2025 23:54:00 -0800 Subject: [PATCH] update engine API routes to include team slug --- .../src/@3rdweb-sdk/react/hooks/useEngine.ts | 8 ++++++-- .../(general)/import/EngineImportPage.tsx | 9 ++++++--- .../overview/engine-instances-table.tsx | 15 +++++++++++++++ .../engine/(general)/overview/engine-list.tsx | 1 + .../(team)/~/engine/(general)/page.tsx | 5 ++++- .../~/engine/(instance)/[engineId]/layout.tsx | 1 + .../~/engine/_utils/getEngineInstance.ts | 16 ++++++++++------ .../engine/_utils/getEngineInstancePageMeta.ts | 1 + .../~/engine/_utils/getEngineInstances.ts | 18 ++++++++++-------- 9 files changed, 54 insertions(+), 20 deletions(-) diff --git a/apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts b/apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts index c591762d698..9ddb60d201d 100644 --- a/apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts +++ b/apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts @@ -232,13 +232,15 @@ export function useEngineUpdateDeployment() { export type RemoveEngineFromDashboardIParams = { instanceId: string; + teamIdOrSlug: string; }; export async function removeEngineFromDashboard({ instanceId, + teamIdOrSlug, }: RemoveEngineFromDashboardIParams) { const res = await apiServerProxy({ - pathname: `/v1/engine/${instanceId}`, + pathname: `/v1/teams/${teamIdOrSlug}/engine/${instanceId}`, method: "DELETE", }); @@ -273,18 +275,20 @@ export async function deleteCloudHostedEngine({ } export type EditEngineInstanceParams = { + teamIdOrSlug: string; instanceId: string; name: string; url: string; }; export async function editEngineInstance({ + teamIdOrSlug, instanceId, name, url, }: EditEngineInstanceParams) { const res = await apiServerProxy({ - pathname: `/v1/engine/${instanceId}`, + pathname: `/v1/teams/${teamIdOrSlug}/engine/${instanceId}`, method: "PUT", headers: { "Content-Type": "application/json", diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.tsx index 67a6b6c8b3d..ea9f330bc2b 100644 --- a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.tsx +++ b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/import/EngineImportPage.tsx @@ -28,12 +28,15 @@ const formSchema = z.object({ type ImportEngineParams = z.infer; -async function importEngine(data: ImportEngineParams) { +async function importEngine({ + teamIdOrSlug, + ...data +}: ImportEngineParams & { teamIdOrSlug: string }) { // Instance URLs should end with a /. const url = data.url.endsWith("/") ? data.url : `${data.url}/`; const res = await apiServerProxy({ - pathname: "/v1/engine", + pathname: `/v1/teams/${teamIdOrSlug}/engine`, method: "POST", headers: { "Content-Type": "application/json", @@ -59,7 +62,7 @@ export function EngineImportCard(props: { { - await importEngine(params); + await importEngine({ ...params, teamIdOrSlug: props.teamSlug }); router.push(`/team/${props.teamSlug}/~/engine`); }} /> diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.tsx index c5d97b25b46..997807701de 100644 --- a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.tsx +++ b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/overview/engine-instances-table.tsx @@ -74,6 +74,7 @@ type RemovedEngineFromDashboard = ( ) => Promise; export function EngineInstancesTable(props: { + teamIdOrSlug: string; instances: EngineInstance[]; engineLinkPrefix: string; }) { @@ -81,6 +82,7 @@ export function EngineInstancesTable(props: { return ( { @@ -100,6 +102,7 @@ export function EngineInstancesTable(props: { } export function EngineInstancesTableUI(props: { + teamIdOrSlug: string; instances: EngineInstance[]; engineLinkPrefix: string; deleteCloudHostedEngine: DeletedCloudHostedEngine; @@ -124,6 +127,7 @@ export function EngineInstancesTableUI(props: { {props.instances.map((instance) => ( void; instance: EngineInstance; editEngineInstance: EditedEngineInstance; @@ -357,6 +365,7 @@ function EditModal(props: { props.onOpenChange(false)} @@ -372,6 +381,7 @@ const editEngineFormSchema = z.object({ }); function EditModalContent(props: { + teamIdOrSlug: string; instance: EngineInstance; editEngineInstance: EditedEngineInstance; closeModal: () => void; @@ -396,6 +406,7 @@ function EditModalContent(props: { onSubmit={form.handleSubmit((data) => editInstance.mutate( { + teamIdOrSlug: props.teamIdOrSlug, instanceId: props.instance.id, name: data.name, url: data.url, @@ -475,6 +486,7 @@ function EditModalContent(props: { } function RemoveModal(props: { + teamIdOrSlug: string; instance: EngineInstance; open: boolean; onOpenChange: (open: boolean) => void; @@ -491,6 +503,7 @@ function RemoveModal(props: { (instance.status === "active" && !instance.deploymentId) ? ( onOpenChange(false)} removeEngineFromDashboard={props.removeEngineFromDashboard} /> @@ -507,6 +520,7 @@ function RemoveModal(props: { } function RemoveEngineFromDashboardModalContent(props: { + teamIdOrSlug: string; instance: EngineInstance; close: () => void; removeEngineFromDashboard: RemovedEngineFromDashboard; @@ -552,6 +566,7 @@ function RemoveEngineFromDashboardModalContent(props: { removeFromDashboard.mutate( { instanceId: instance.id, + teamIdOrSlug: props.teamIdOrSlug, }, { onSuccess: () => { diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/overview/engine-list.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/overview/engine-list.tsx index 268d3a7f5a9..650fef5794c 100644 --- a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/overview/engine-list.tsx +++ b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/overview/engine-list.tsx @@ -12,6 +12,7 @@ export const EngineInstancesList = (props: { return (
diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/page.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/page.tsx index 3936578d6e7..79d7c96a4aa 100644 --- a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/page.tsx +++ b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(general)/page.tsx @@ -29,7 +29,10 @@ export default async function Page(props: { loginRedirect(`/team/${params.team_slug}/~/engine`); } - const res = await getEngineInstances({ authToken }); + const res = await getEngineInstances({ + authToken, + teamIdOrSlug: params.team_slug, + }); return (