From c79cb14132fb2c4fee7b59bf8952e6615c989189 Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Thu, 16 Jan 2025 10:46:23 +0100 Subject: [PATCH] Refetch query on draft creation (#9650) After hitting use as draft, we redirect the user to the workflow page. If the user already accessed that page, the workflow and its current version will be stored in cache. So we also need to update that cache. I tried to update it manually but it was more complex than expected. Steps and trigger are not fully defined objects. I ended with a simple refetch query that I wanted to avoid but that is at least fully working with minimum logic. --- .../twenty-front/src/generated/graphql.tsx | 3 ++- .../useCreateDraftFromWorkflowVersion.ts | 27 ++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/packages/twenty-front/src/generated/graphql.tsx b/packages/twenty-front/src/generated/graphql.tsx index 6edec2ec3..40c09c186 100644 --- a/packages/twenty-front/src/generated/graphql.tsx +++ b/packages/twenty-front/src/generated/graphql.tsx @@ -1553,7 +1553,8 @@ export enum WorkspaceActivationStatus { Active = 'ACTIVE', Inactive = 'INACTIVE', OngoingCreation = 'ONGOING_CREATION', - PendingCreation = 'PENDING_CREATION' + PendingCreation = 'PENDING_CREATION', + Suspended = 'SUSPENDED' } export type WorkspaceEdge = { diff --git a/packages/twenty-front/src/modules/workflow/hooks/useCreateDraftFromWorkflowVersion.ts b/packages/twenty-front/src/modules/workflow/hooks/useCreateDraftFromWorkflowVersion.ts index 96d480e11..56579cb13 100644 --- a/packages/twenty-front/src/modules/workflow/hooks/useCreateDraftFromWorkflowVersion.ts +++ b/packages/twenty-front/src/modules/workflow/hooks/useCreateDraftFromWorkflowVersion.ts @@ -1,3 +1,5 @@ +import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; +import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery'; import { useApolloClient } from '@apollo/client'; import { CreateDraftFromWorkflowVersionInput, @@ -11,10 +13,33 @@ export const useCreateDraftFromWorkflowVersion = () => { client: apolloClient, }); + const { findManyRecordsQuery: findManyWorkflowsQuery } = + useFindManyRecordsQuery({ + objectNameSingular: CoreObjectNameSingular.Workflow, + recordGqlFields: { + id: true, + name: true, + statuses: true, + lastPublishedVersionId: true, + versions: true, + }, + }); + const createDraftFromWorkflowVersion = async ( input: CreateDraftFromWorkflowVersionInput, ) => { - await mutate({ variables: { input } }); + await mutate({ + variables: { input }, + awaitRefetchQueries: true, + refetchQueries: [ + { + query: findManyWorkflowsQuery, + variables: { + id: input.workflowId, + }, + }, + ], + }); }; return {