Fix discard draft optimistic rendering (#9153)

Remove draft workflow version from cached workflow
This commit is contained in:
martmull
2024-12-20 11:36:47 +01:00
committed by GitHub
parent 925294675c
commit 2437572a5c
2 changed files with 46 additions and 0 deletions

View File

@ -23,6 +23,14 @@ const pagesCoverage = {
exclude: ['src/generated/**/*', 'src/modules/**/*', 'src/**/*.ts'],
};
const performanceCoverage = {
branches: 35,
statements: 60,
lines: 60,
functions: 45,
exclude: ['src/generated/**/*', 'src/modules/**/*', 'src/**/*.ts'],
};
const storybookStoriesFolders = process.env.STORYBOOK_SCOPE;
module.exports =
@ -30,4 +38,6 @@ module.exports =
? pagesCoverage
: storybookStoriesFolders === 'modules'
? modulesCoverage
: storybookStoriesFolders === 'performance'
? performanceCoverage
: globalCoverage;

View File

@ -1,10 +1,20 @@
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord';
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
import { Workflow, WorkflowVersion } from '@/workflow/types/Workflow';
import { useApolloClient } from '@apollo/client';
export const useDeleteOneWorkflowVersion = () => {
const apolloClient = useApolloClient();
const { deleteOneRecord } = useDeleteOneRecord({
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
});
const getWorkflowVersionFromCache = useGetRecordFromCache({
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
});
const getWorkflowFromCache = useGetRecordFromCache({
objectNameSingular: CoreObjectNameSingular.Workflow,
});
const deleteOneWorkflowVersion = async ({
workflowVersionId,
@ -12,6 +22,32 @@ export const useDeleteOneWorkflowVersion = () => {
workflowVersionId: string;
}) => {
await deleteOneRecord(workflowVersionId);
const cachedWorkflowVersion =
getWorkflowVersionFromCache<WorkflowVersion>(workflowVersionId);
if (!cachedWorkflowVersion) {
return;
}
const cachedWorkflow = getWorkflowFromCache<Workflow>(
cachedWorkflowVersion.workflowId,
);
if (!cachedWorkflow) {
return;
}
apolloClient.cache.modify({
id: apolloClient.cache.identify(cachedWorkflow),
fields: {
versions: () => {
return cachedWorkflow.versions.filter(
(version) => version.id !== workflowVersionId,
);
},
},
});
};
return { deleteOneWorkflowVersion };