diff --git a/apps/console/src/pages/organizations/assets/dialogs/PublishAssetListDialog.tsx b/apps/console/src/pages/organizations/assets/dialogs/PublishAssetListDialog.tsx index 84d06531d..f9357a979 100644 --- a/apps/console/src/pages/organizations/assets/dialogs/PublishAssetListDialog.tsx +++ b/apps/console/src/pages/organizations/assets/dialogs/PublishAssetListDialog.tsx @@ -25,7 +25,7 @@ import { useToast, } from "@probo/ui"; import type { ReactNode } from "react"; -import { useMemo } from "react"; +import { useMemo, useRef } from "react"; import { useMutation } from "react-relay"; import { graphql } from "relay-runtime"; import { z } from "zod"; @@ -83,6 +83,8 @@ export function PublishAssetListDialog({ const [publish, isPublishing] = useMutation(publishMutation); + const minorRef = useRef(false); + const approverIds = watch("approverIds"); const hasApprovers = approverIds.length > 0; @@ -90,8 +92,9 @@ export function PublishAssetListDialog({ publish({ variables: { input: { + minor: minorRef.current, organizationId, - approverIds: data.approverIds.length > 0 ? data.approverIds : undefined, + approverIds: !minorRef.current && data.approverIds.length > 0 ? data.approverIds : undefined, }, }, onCompleted(response) { @@ -145,9 +148,19 @@ export function PublishAssetListDialog({ + - - - ) - : ( - <> - - - - )} + + diff --git a/apps/console/src/pages/organizations/documents/_components/PublishDocumentsDialog.tsx b/apps/console/src/pages/organizations/documents/_components/PublishDocumentsDialog.tsx index 9809649ae..2824a7413 100644 --- a/apps/console/src/pages/organizations/documents/_components/PublishDocumentsDialog.tsx +++ b/apps/console/src/pages/organizations/documents/_components/PublishDocumentsDialog.tsx @@ -30,8 +30,7 @@ import { useMutation } from "react-relay"; import { graphql } from "relay-runtime"; import { z } from "zod"; -import type { PublishDocumentsDialog_majorMutation } from "#/__generated__/core/PublishDocumentsDialog_majorMutation.graphql"; -import type { PublishDocumentsDialog_minorMutation } from "#/__generated__/core/PublishDocumentsDialog_minorMutation.graphql"; +import type { PublishDocumentsDialog_bulkPublishMutation } from "#/__generated__/core/PublishDocumentsDialog_bulkPublishMutation.graphql"; import { useFormWithSchema } from "#/hooks/useFormWithSchema"; type Props = { @@ -40,27 +39,11 @@ type Props = { onSave: () => void; }; -const publishMajorMutation = graphql` - mutation PublishDocumentsDialog_majorMutation( - $input: BulkPublishDocumentVersionsInput! +const bulkPublishMutation = graphql` + mutation PublishDocumentsDialog_bulkPublishMutation( + $input: BulkPublishDocumentsInput! ) { - bulkPublishMajorDocumentVersions(input: $input) { - documentVersions { - id - } - documents { - id - ...DocumentListItemFragment - } - } - } -`; - -const publishMinorMutation = graphql` - mutation PublishDocumentsDialog_minorMutation( - $input: BulkPublishDocumentVersionsInput! - ) { - bulkPublishMinorDocumentVersions(input: $input) { + bulkPublishDocuments(input: $input) { documentVersions { id } @@ -80,18 +63,14 @@ export function PublishDocumentsDialog({ const { __ } = useTranslate(); const { toast } = useToast(); const dialogRef = useDialogRef(); - const actionRef = useRef<"major" | "minor">("major"); + const minorRef = useRef(false); const schema = z.object({ changelog: z.string().min(1, __("Changelog is required")), }); - const [publishMajor, isPublishingMajor] - = useMutation(publishMajorMutation); - const [publishMinor, isPublishingMinor] - = useMutation(publishMinorMutation); - - const isBusy = isPublishingMajor || isPublishingMinor; + const [publish, isPublishing] + = useMutation(bulkPublishMutation); const { handleSubmit, @@ -103,45 +82,42 @@ export function PublishDocumentsDialog({ }, }); - const onCompleted = (_: unknown, errors: ReadonlyArray<{ message: string }> | null) => { - if (errors?.length) { - toast({ - title: __("Error"), - description: formatError(__("Failed to publish documents"), [...errors]), - variant: "error", - }); - } else { - toast({ - title: __("Success"), - description: sprintf(__("%s documents published"), documentIds.length), - variant: "success", - }); - dialogRef.current?.close(); - onSave(); - } - }; - - const onError = (error: Error) => { - toast({ - title: __("Error"), - description: error.message, - variant: "error", - }); - }; - const onSubmit = (data: z.infer) => { - const variables = { - input: { - documentIds, - changelog: data.changelog, + const minor = minorRef.current; + minorRef.current = false; + publish({ + variables: { + input: { + documentIds, + minor, + changelog: data.changelog, + }, }, - }; - - if (actionRef.current === "minor") { - publishMinor({ variables, onCompleted, onError }); - } else { - publishMajor({ variables, onCompleted, onError }); - } + onCompleted(_, errors) { + if (errors?.length) { + toast({ + title: __("Error"), + description: formatError(__("Failed to publish documents"), [...errors]), + variant: "error", + }); + return; + } + toast({ + title: __("Success"), + description: sprintf(__("%s documents published"), documentIds.length), + variant: "success", + }); + dialogRef.current?.close(); + onSave(); + }, + onError(error) { + toast({ + title: __("Error"), + description: error.message, + variant: "error", + }); + }, + }); }; return ( @@ -184,15 +160,15 @@ export function PublishDocumentsDialog({ type="submit" variant="secondary" icon={IconUpload} - disabled={isBusy} - onClick={() => { actionRef.current = "minor"; }} + disabled={isPublishing} + onClick={() => { minorRef.current = true; }} > {__("Publish as minor")} diff --git a/apps/console/src/pages/organizations/findings/dialogs/PublishFindingListDialog.tsx b/apps/console/src/pages/organizations/findings/dialogs/PublishFindingListDialog.tsx index c921750ba..cb92dd66e 100644 --- a/apps/console/src/pages/organizations/findings/dialogs/PublishFindingListDialog.tsx +++ b/apps/console/src/pages/organizations/findings/dialogs/PublishFindingListDialog.tsx @@ -25,7 +25,7 @@ import { useToast, } from "@probo/ui"; import type { ReactNode } from "react"; -import { useMemo } from "react"; +import { useMemo, useRef } from "react"; import { useMutation } from "react-relay"; import { graphql } from "relay-runtime"; import { z } from "zod"; @@ -83,6 +83,8 @@ export function PublishFindingListDialog({ const [publish, isPublishing] = useMutation(publishMutation); + const minorRef = useRef(false); + const approverIds = watch("approverIds"); const hasApprovers = approverIds.length > 0; @@ -90,8 +92,9 @@ export function PublishFindingListDialog({ publish({ variables: { input: { + minor: minorRef.current, organizationId, - approverIds: data.approverIds.length > 0 ? data.approverIds : undefined, + approverIds: !minorRef.current && data.approverIds.length > 0 ? data.approverIds : undefined, }, }, onCompleted(response) { @@ -145,9 +148,19 @@ export function PublishFindingListDialog({ +