From abcbd2d59946da9ac749ab83396763c23b0c9352 Mon Sep 17 00:00:00 2001 From: HarikrishnanD Date: Tue, 9 Sep 2025 22:07:40 +0530 Subject: [PATCH 1/2] feat: auto-refresh services list when duplicating to same environment - Add cache invalidation for environment.one and environment.byProjectId queries - Fix issue where duplicated services weren't visible until hard refresh - Ensure proper invalidation when duplicating to current environment - Resolves #2565 --- .../dashboard/project/duplicate-project.tsx | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) 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 From ec11325165f9ad52952911c26e22c1d6cf0bdf1e Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:40:00 +0000 Subject: [PATCH 2/2] [autofix.ci] apply automated fixes --- .../dashboard/project/duplicate-project.tsx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/dokploy/components/dashboard/project/duplicate-project.tsx b/apps/dokploy/components/dashboard/project/duplicate-project.tsx index b87faa1ed..3455f34cf 100644 --- a/apps/dokploy/components/dashboard/project/duplicate-project.tsx +++ b/apps/dokploy/components/dashboard/project/duplicate-project.tsx @@ -80,14 +80,18 @@ 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, + 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 }); @@ -98,7 +102,7 @@ export const DuplicateProject = ({ } } } - + toast.success( duplicateType === "new-project" ? "Project duplicated successfully" @@ -347,4 +351,4 @@ export const DuplicateProject = ({ ); -}; \ No newline at end of file +};