diff --git a/src/scenes/Projects/Overview/ProjectOverview.graphql b/src/scenes/Projects/Overview/ProjectOverview.graphql index 2a5653cb34..73e31ba28b 100644 --- a/src/scenes/Projects/Overview/ProjectOverview.graphql +++ b/src/scenes/Projects/Overview/ProjectOverview.graphql @@ -53,6 +53,7 @@ fragment ProjectOverview on Project { canEdit value transitions { + key to label type diff --git a/src/scenes/Projects/Update/ProjectWorkflowDialog.tsx b/src/scenes/Projects/Update/ProjectWorkflowDialog.tsx index 4722533749..3096d9f147 100644 --- a/src/scenes/Projects/Update/ProjectWorkflowDialog.tsx +++ b/src/scenes/Projects/Update/ProjectWorkflowDialog.tsx @@ -22,7 +22,7 @@ import { import { AutocompleteField } from '../../../components/form/AutocompleteField'; import { Link } from '../../../components/Routing'; import { ProjectOverviewFragment } from '../Overview/ProjectOverview.graphql'; -import { UpdateProjectDocument } from './UpdateProject.graphql'; +import { TransitionProjectDocument } from './TransitionProject.graphql'; type UpdateProjectDialogProps = Except< DialogFormProps, @@ -41,7 +41,7 @@ export const ProjectWorkflowDialog = ({ project, ...props }: UpdateProjectDialogProps) => { - const [updateProject] = useMutation(UpdateProjectDocument); + const [transitionProject] = useMutation(TransitionProjectDocument); const { classes } = useStyles(); const { canBypassTransitions, transitions } = project.step; @@ -68,23 +68,23 @@ export const ProjectWorkflowDialog = ({ submitLabel={canBypassTransitions ? undefined : false} sendIfClean changesetAware - onSubmit={async ({ submitAction, project: submittedProjectFields }) => { + onSubmit={async ({ + submitAction: transitionKey, + project: submittedProjectFields, + }) => { const step = submittedProjectFields?.step; // If clicking save for step override, but there is no step, do nothing. - if (!submitAction && !step) { + if (!transitionKey && !step) { return; } - await updateProject({ + await transitionProject({ variables: { input: { - project: { - id: project.id, - // remove index suffix used to make submit action unique - step: - (submitAction?.split(':')[0] as ProjectStep | null) ?? step, - }, - changeset: project.changeset?.id, + project: project.id, + ...(transitionKey + ? { transition: transitionKey } + : { bypassTo: step }), }, }, }); @@ -96,7 +96,7 @@ export const ProjectWorkflowDialog = ({ > - {transitions.map((transition, i) => ( + {transitions.map((transition) => ( {transition.label} diff --git a/src/scenes/Projects/Update/TransitionProject.graphql b/src/scenes/Projects/Update/TransitionProject.graphql new file mode 100644 index 0000000000..5cf76d803a --- /dev/null +++ b/src/scenes/Projects/Update/TransitionProject.graphql @@ -0,0 +1,6 @@ +mutation TransitionProject($input: ExecuteProjectTransitionInput!) { + transitionProject(input: $input) { + ...ProjectOverview + ...RecalculateChangesetDiff + } +}