From 6e792704239f6da2059249b78ca60f0f1ac05bb4 Mon Sep 17 00:00:00 2001 From: Aziz Becha Date: Sat, 1 Aug 2026 00:59:17 +0100 Subject: [PATCH] fix(ui): track concurrent deployment deletes --- .../deployments/show-deployments.tsx | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx b/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx index e8fd81984..1a531e24c 100644 --- a/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx +++ b/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx @@ -63,9 +63,9 @@ export const ShowDeployments = ({ const [activeLog, setActiveLog] = useState< RouterOutputs["deployment"]["all"][number] | null >(null); - const [removingDeploymentId, setRemovingDeploymentId] = useState< - string | null - >(null); + const [removingDeploymentIds, setRemovingDeploymentIds] = useState< + Set + >(new Set()); const { data: deployments, isPending: isLoadingDeployments } = api.deployment.allByType.useQuery( { @@ -84,7 +84,7 @@ export const ShowDeployments = ({ api.rollback.rollback.useMutation(); const { mutateAsync: killProcess, isPending: isKillingProcess } = api.deployment.killProcess.useMutation(); - const { mutateAsync: removeDeployment, isPending: isRemovingDeployment } = + const { mutateAsync: removeDeployment } = api.deployment.removeDeployment.useMutation(); // Cancel deployment mutations @@ -411,7 +411,11 @@ export const ShowDeployments = ({ description="Are you sure you want to delete this deployment? This action cannot be undone." type="default" onClick={async () => { - setRemovingDeploymentId(deployment.deploymentId); + setRemovingDeploymentIds((deploymentIds) => { + const nextDeploymentIds = new Set(deploymentIds); + nextDeploymentIds.add(deployment.deploymentId); + return nextDeploymentIds; + }); try { await removeDeployment({ deploymentId: deployment.deploymentId, @@ -420,17 +424,24 @@ export const ShowDeployments = ({ } catch (error) { toast.error("Error deleting deployment"); } finally { - setRemovingDeploymentId(null); + setRemovingDeploymentIds((deploymentIds) => { + const nextDeploymentIds = new Set( + deploymentIds, + ); + nextDeploymentIds.delete( + deployment.deploymentId, + ); + return nextDeploymentIds; + }); } }} >