diff --git a/apps/dokploy/components/dashboard/project/duplicate-project.tsx b/apps/dokploy/components/dashboard/project/duplicate-project.tsx index df81c41f0..b87faa1ed 100644 --- a/apps/dokploy/components/dashboard/project/duplicate-project.tsx +++ b/apps/dokploy/components/dashboard/project/duplicate-project.tsx @@ -80,6 +80,25 @@ export const DuplicateProject = ({ api.project.duplicate.useMutation({ onSuccess: async (newProject) => { await utils.project.all.invalidate(); + + // If duplicating to same project+environment, invalidate the environment query + // to refresh the services list + if (duplicateType === "existing-environment") { + await utils.environment.one.invalidate({ environmentId: selectedTargetEnvironment }); + await utils.environment.byProjectId.invalidate({ projectId: selectedTargetProject }); + + // If duplicating to the same environment we're currently viewing, + // also invalidate the current environment to refresh the services list + if (selectedTargetEnvironment === environmentId) { + await utils.environment.one.invalidate({ environmentId }); + // Also invalidate the project query to refresh the project data + const projectId = router.query.projectId as string; + if (projectId) { + await utils.project.one.invalidate({ projectId }); + } + } + } + toast.success( duplicateType === "new-project" ? "Project duplicated successfully" @@ -328,4 +347,4 @@ export const DuplicateProject = ({ ); -}; +}; \ No newline at end of file