diff --git a/client/src/pages/automation/project/components/project-header/components/settings-menu/hooks/useSettingsMenu.ts b/client/src/pages/automation/project/components/project-header/components/settings-menu/hooks/useSettingsMenu.ts index f25cf0f153d..c01854052e9 100644 --- a/client/src/pages/automation/project/components/project-header/components/settings-menu/hooks/useSettingsMenu.ts +++ b/client/src/pages/automation/project/components/project-header/components/settings-menu/hooks/useSettingsMenu.ts @@ -36,9 +36,12 @@ export const useSettingsMenu = ({project, workflow}: {project: Project; workflow const queryClient = useQueryClient(); const deleteProjectMutation = useDeleteProjectMutation({ - onSuccess: () => { + onSuccess: (_, projectId) => { navigate('/automation/projects'); + queryClient.cancelQueries({queryKey: ProjectKeys.project(projectId)}); + queryClient.removeQueries({queryKey: ProjectKeys.project(projectId)}); + queryClient.invalidateQueries({queryKey: ProjectKeys.projects}); queryClient.invalidateQueries({ queryKey: ProjectCategoryKeys.projectCategories, diff --git a/client/src/pages/automation/projects/Projects.tsx b/client/src/pages/automation/projects/Projects.tsx index 2c94ed81e0f..9f817e079bd 100644 --- a/client/src/pages/automation/projects/Projects.tsx +++ b/client/src/pages/automation/projects/Projects.tsx @@ -12,7 +12,7 @@ import Header from '@/shared/layout/Header'; import LayoutContainer from '@/shared/layout/LayoutContainer'; import {useGetProjectCategoriesQuery} from '@/shared/queries/automation/projectCategories.queries'; import {useGetProjectTagsQuery} from '@/shared/queries/automation/projectTags.queries'; -import {useGetWorkspaceProjectsQuery} from '@/shared/queries/automation/projects.queries'; +import {ProjectKeys, useGetWorkspaceProjectsQuery} from '@/shared/queries/automation/projects.queries'; import {useApplicationInfoStore} from '@/shared/stores/useApplicationInfoStore'; import {useFeatureFlagsStore} from '@/shared/stores/useFeatureFlagsStore'; import {useQueryClient} from '@tanstack/react-query'; @@ -36,6 +36,8 @@ const Projects = () => { const fileInputRef = useRef(null); const navigate = useNavigate(); + const queryClient = useQueryClient(); + const ff_1039 = useFeatureFlagsStore()('ff-1039'); const ff_1041 = useFeatureFlagsStore()('ff-1041'); const ff_2482 = useFeatureFlagsStore()('ff-2482'); @@ -66,9 +68,9 @@ const Projects = () => { tagId: searchParams.get('tagId') ? parseInt(searchParams.get('tagId')!) : undefined, }); - const {data: tags, error: tagsError, isLoading: tagsIsLoading} = useGetProjectTagsQuery(); + const isRefetchingProjects = queryClient.isFetching({queryKey: ProjectKeys.projects}) > 0; - const queryClient = useQueryClient(); + const {data: tags, error: tagsError, isLoading: tagsIsLoading} = useGetProjectTagsQuery(); return ( { > {projects && projects?.length > 0 && tags ? ( - + ); diff --git a/client/src/pages/automation/projects/components/project-list/ProjectListItem.tsx b/client/src/pages/automation/projects/components/project-list/ProjectListItem.tsx index bbf5b67c2e9..89c6ea83424 100644 --- a/client/src/pages/automation/projects/components/project-list/ProjectListItem.tsx +++ b/client/src/pages/automation/projects/components/project-list/ProjectListItem.tsx @@ -62,7 +62,7 @@ import { UploadIcon, WorkflowIcon, } from 'lucide-react'; -import {useCallback, useRef, useState} from 'react'; +import {MouseEvent, useCallback, useRef, useState} from 'react'; import {Link, useNavigate, useSearchParams} from 'react-router-dom'; import TagList from '../../../../../shared/components/TagList'; @@ -109,7 +109,10 @@ const ProjectListItem = ({project, projectGitConfiguration, remainingTags}: Proj }); const deleteProjectMutation = useDeleteProjectMutation({ - onSuccess: () => { + onSuccess: (_, projectId) => { + queryClient.cancelQueries({queryKey: ProjectKeys.project(projectId)}); + queryClient.removeQueries({queryKey: ProjectKeys.project(projectId)}); + queryClient.invalidateQueries({queryKey: ProjectKeys.projects}); queryClient.invalidateQueries({ queryKey: ProjectCategoryKeys.projectCategories, @@ -490,7 +493,11 @@ const ProjectListItem = ({project, projectGitConfiguration, remainingTags}: Proj setShowDeleteDialog(true)} + onClick={(event: MouseEvent) => { + setShowDeleteDialog(true); + + event.stopPropagation(); + }} > Delete diff --git a/client/src/pages/automation/projects/components/project-workflow-list/ProjectWorkflowList.tsx b/client/src/pages/automation/projects/components/project-workflow-list/ProjectWorkflowList.tsx index b08a51ee9f7..4d2e0ce2bc8 100644 --- a/client/src/pages/automation/projects/components/project-workflow-list/ProjectWorkflowList.tsx +++ b/client/src/pages/automation/projects/components/project-workflow-list/ProjectWorkflowList.tsx @@ -22,7 +22,7 @@ import {ChevronDownIcon, LayoutTemplateIcon, UploadIcon, WorkflowIcon} from 'luc import {useRef, useState} from 'react'; import {useNavigate} from 'react-router-dom'; -const ProjectWorkflowList = ({project}: {project: Project}) => { +const ProjectWorkflowList = ({project, queryEnabled}: {project: Project; queryEnabled?: boolean}) => { const [showWorkflowDialog, setShowWorkflowDialog] = useState(false); const {captureProjectWorkflowCreated, captureProjectWorkflowImported} = useAnalytics(); @@ -47,7 +47,7 @@ const ProjectWorkflowList = ({project}: {project: Project}) => { const {data: workflows, isLoading: isProjectWorkflowsLoading} = useGetProjectWorkflowsQuery( project.id!, - !!project.id + queryEnabled && !!project.id ); const workflowTaskDispatcherDefinitions: {