diff --git a/app/actions/definitions/documents.tsx b/app/actions/definitions/documents.tsx index 60bf609ec..0541841af 100644 --- a/app/actions/definitions/documents.tsx +++ b/app/actions/definitions/documents.tsx @@ -29,6 +29,7 @@ import { getEventFiles } from "@shared/utils/files"; import DocumentDelete from "~/scenes/DocumentDelete"; import DocumentMove from "~/scenes/DocumentMove"; import DocumentPermanentDelete from "~/scenes/DocumentPermanentDelete"; +import DocumentPublish from "~/scenes/DocumentPublish"; import DocumentTemplatizeDialog from "~/components/DocumentTemplatizeDialog"; import { createAction } from "~/actions"; import { DocumentSection } from "~/actions/sections"; @@ -71,11 +72,9 @@ export const createDocument = createAction({ section: DocumentSection, icon: , keywords: "create", - visible: ({ activeCollectionId, stores }) => - !!activeCollectionId && - stores.policies.abilities(activeCollectionId).update, + visible: ({ currentTeamId, stores }) => + !!currentTeamId && stores.policies.abilities(currentTeamId).createDocument, perform: ({ activeCollectionId, inStarredSection }) => - activeCollectionId && history.push(newDocumentPath(activeCollectionId), { starred: inStarredSection, }), @@ -143,20 +142,30 @@ export const publishDocument = createAction({ !!document?.isDraft && stores.policies.abilities(activeDocumentId).update ); }, - perform: ({ activeDocumentId, stores, t }) => { + perform: async ({ activeDocumentId, stores, t }) => { if (!activeDocumentId) { return; } const document = stores.documents.get(activeDocumentId); + if (document?.publishedAt) { + return; + } - document?.save({ - publish: true, - }); - - stores.toasts.showToast(t("Document published"), { - type: "success", - }); + if (document?.collectionId) { + await document.save({ + publish: true, + }); + stores.toasts.showToast(t("Document published"), { + type: "success", + }); + } else if (document) { + stores.dialogs.openModal({ + title: t("Publish document"), + isCentered: true, + content: , + }); + } }, }); diff --git a/app/components/ActionButton.tsx b/app/components/ActionButton.tsx index f3fd358de..ae4b50bb9 100644 --- a/app/components/ActionButton.tsx +++ b/app/components/ActionButton.tsx @@ -23,31 +23,44 @@ const ActionButton = React.forwardRef( { action, context, tooltip, hideOnActionDisabled, ...rest }: Props, ref: React.Ref ) => { + const [executing, setExecuting] = React.useState(false); const disabled = rest.disabled; if (!context || !action) { return - )} - - -
{t("Choose a collection")}
-