@strapi/content-manager 5.18.1 → 5.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/hooks/useDocumentActions.js +0 -3
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +1 -4
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/index.js +43 -24
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +44 -25
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/layout.js +1 -27
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +2 -9
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +2 -2
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +3 -3
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +2 -2
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +3 -3
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +148 -139
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +149 -140
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +3 -1
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +3 -1
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
- package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
- package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js +101 -35
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +102 -36
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +4 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +4 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/validation.js +2 -1
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs +2 -1
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js +20 -19
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs +20 -19
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +2 -2
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +2 -2
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js +5 -1
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs +5 -1
- package/dist/server/preview/services/preview-config.mjs.map +1 -1
- package/dist/server/preview/services/preview.js +4 -0
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs +4 -0
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +1 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/package.json +5 -6
@@ -60,7 +60,6 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
60
60
|
const { trackUsage } = strapiAdmin.useTracking();
|
61
61
|
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
62
62
|
const navigate = reactRouterDom.useNavigate();
|
63
|
-
const setCurrentStep = strapiAdmin.useGuidedTour('useDocumentActions', (state)=>state.setCurrentStep);
|
64
63
|
// Get metadata from context providers for tracking purposes
|
65
64
|
const previewContext = Preview.usePreviewContext('useDocumentActions', ()=>true, false);
|
66
65
|
const relationContext = RelationModal.useRelationModal('useDocumentActions', ()=>true, false);
|
@@ -465,7 +464,6 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
465
464
|
defaultMessage: 'Saved document'
|
466
465
|
})
|
467
466
|
});
|
468
|
-
setCurrentStep('contentManager.success');
|
469
467
|
return res.data;
|
470
468
|
} catch (err) {
|
471
469
|
toggleNotification({
|
@@ -484,7 +482,6 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
484
482
|
formatMessage,
|
485
483
|
fromPreview,
|
486
484
|
fromRelationModal,
|
487
|
-
setCurrentStep,
|
488
485
|
toggleNotification,
|
489
486
|
trackUsage
|
490
487
|
]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useDocumentActions.js","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n useGuidedTour,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: any; meta?: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const setCurrentStep = useGuidedTour('useDocumentActions', (state) => state.setCurrentStep);\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', { documentId, fromPreview, fromRelationModal });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n setCurrentStep('contentManager.success');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n setCurrentStep,\n toggleNotification,\n trackUsage,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","setCurrentStep","useGuidedTour","state","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","undefined","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","data","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useDocumentActions.js","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: any; meta?: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', { documentId, fromPreview, fromRelationModal });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n trackUsage,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","undefined","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","data","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import { useNotification, useTracking, useAPIErrorHandler
|
2
|
+
import { useNotification, useTracking, useAPIErrorHandler } from '@strapi/admin/strapi-admin';
|
3
3
|
import { useIntl } from 'react-intl';
|
4
4
|
import { useNavigate } from 'react-router-dom';
|
5
5
|
import { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal.mjs';
|
@@ -39,7 +39,6 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
39
39
|
const { trackUsage } = useTracking();
|
40
40
|
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
|
41
41
|
const navigate = useNavigate();
|
42
|
-
const setCurrentStep = useGuidedTour('useDocumentActions', (state)=>state.setCurrentStep);
|
43
42
|
// Get metadata from context providers for tracking purposes
|
44
43
|
const previewContext = usePreviewContext('useDocumentActions', ()=>true, false);
|
45
44
|
const relationContext = useRelationModal('useDocumentActions', ()=>true, false);
|
@@ -444,7 +443,6 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
444
443
|
defaultMessage: 'Saved document'
|
445
444
|
})
|
446
445
|
});
|
447
|
-
setCurrentStep('contentManager.success');
|
448
446
|
return res.data;
|
449
447
|
} catch (err) {
|
450
448
|
toggleNotification({
|
@@ -463,7 +461,6 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
463
461
|
formatMessage,
|
464
462
|
fromPreview,
|
465
463
|
fromRelationModal,
|
466
|
-
setCurrentStep,
|
467
464
|
toggleNotification,
|
468
465
|
trackUsage
|
469
466
|
]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useDocumentActions.mjs","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n useGuidedTour,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: any; meta?: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const setCurrentStep = useGuidedTour('useDocumentActions', (state) => state.setCurrentStep);\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', { documentId, fromPreview, fromRelationModal });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n setCurrentStep('contentManager.success');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n setCurrentStep,\n toggleNotification,\n trackUsage,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","setCurrentStep","useGuidedTour","state","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","undefined","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","data","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useDocumentActions.mjs","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: any; meta?: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', { documentId, fromPreview, fromRelationModal });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n trackUsage,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","undefined","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","data","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}
|
package/dist/admin/index.js
CHANGED
@@ -87,27 +87,8 @@ var index = {
|
|
87
87
|
children: router.routes
|
88
88
|
});
|
89
89
|
app.registerPlugin(cm.config);
|
90
|
-
|
91
|
-
|
92
|
-
{
|
93
|
-
icon: Icons.PuzzlePiece,
|
94
|
-
title: {
|
95
|
-
id: `${plugin.PLUGIN_ID}.widget.chart-entries.title`,
|
96
|
-
defaultMessage: 'Entries'
|
97
|
-
},
|
98
|
-
component: async ()=>{
|
99
|
-
const { ChartEntriesWidget } = await Promise.resolve().then(function () { return require('./components/Widgets.js'); });
|
100
|
-
return ChartEntriesWidget;
|
101
|
-
},
|
102
|
-
pluginId: plugin.PLUGIN_ID,
|
103
|
-
id: 'chart-entries',
|
104
|
-
permissions: [
|
105
|
-
{
|
106
|
-
action: 'plugin::content-manager.explorer.read'
|
107
|
-
}
|
108
|
-
]
|
109
|
-
},
|
110
|
-
{
|
90
|
+
app.widgets.register((widgets)=>{
|
91
|
+
const lastEditedWidget = {
|
111
92
|
icon: Icons.Pencil,
|
112
93
|
title: {
|
113
94
|
id: `${plugin.PLUGIN_ID}.widget.last-edited.title`,
|
@@ -124,8 +105,8 @@ var index = {
|
|
124
105
|
action: 'plugin::content-manager.explorer.read'
|
125
106
|
}
|
126
107
|
]
|
127
|
-
}
|
128
|
-
{
|
108
|
+
};
|
109
|
+
const lastPublishedWidget = {
|
129
110
|
icon: Icons.CheckCircle,
|
130
111
|
title: {
|
131
112
|
id: `${plugin.PLUGIN_ID}.widget.last-published.title`,
|
@@ -142,8 +123,46 @@ var index = {
|
|
142
123
|
action: 'plugin::content-manager.explorer.read'
|
143
124
|
}
|
144
125
|
]
|
126
|
+
};
|
127
|
+
const entriesWidget = {
|
128
|
+
icon: Icons.PuzzlePiece,
|
129
|
+
title: {
|
130
|
+
id: `${plugin.PLUGIN_ID}.widget.chart-entries.title`,
|
131
|
+
defaultMessage: 'Entries'
|
132
|
+
},
|
133
|
+
component: async ()=>{
|
134
|
+
const { ChartEntriesWidget } = await Promise.resolve().then(function () { return require('./components/Widgets.js'); });
|
135
|
+
return ChartEntriesWidget;
|
136
|
+
},
|
137
|
+
pluginId: plugin.PLUGIN_ID,
|
138
|
+
id: 'chart-entries',
|
139
|
+
permissions: [
|
140
|
+
{
|
141
|
+
action: 'plugin::content-manager.explorer.read'
|
142
|
+
}
|
143
|
+
]
|
144
|
+
};
|
145
|
+
const profileInfoIndex = widgets.findIndex((widget)=>widget.id === 'profile-info' && widget.pluginId === 'admin');
|
146
|
+
// Insert chart-entries after the profile-info widget
|
147
|
+
if (profileInfoIndex !== -1) {
|
148
|
+
const newWidgets = [
|
149
|
+
...widgets
|
150
|
+
];
|
151
|
+
newWidgets.splice(profileInfoIndex + 1, 0, entriesWidget);
|
152
|
+
return [
|
153
|
+
lastEditedWidget,
|
154
|
+
lastPublishedWidget,
|
155
|
+
...newWidgets
|
156
|
+
];
|
145
157
|
}
|
146
|
-
|
158
|
+
// Fallback: add to the end if the target widget aren't found
|
159
|
+
return [
|
160
|
+
lastEditedWidget,
|
161
|
+
lastPublishedWidget,
|
162
|
+
...widgets,
|
163
|
+
entriesWidget
|
164
|
+
];
|
165
|
+
});
|
147
166
|
},
|
148
167
|
bootstrap (app) {
|
149
168
|
if (typeof index$1.historyAdmin.bootstrap === 'function') {
|
package/dist/admin/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { CheckCircle, Feather, Pencil, PuzzlePiece } from '@strapi/icons';\n\nimport { PLUGIN_ID } from './constants/plugin';\nimport { ContentManagerPlugin } from './content-manager';\nimport { historyAdmin } from './history';\nimport { reducer } from './modules/reducers';\nimport { previewAdmin } from './preview';\nimport { routes } from './router';\nimport { prefixPluginTranslations } from './utils/translations';\n\n// NOTE: we have to preload it to ensure chunks will have it available as global\nimport 'prismjs';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n const cm = new ContentManagerPlugin();\n\n app.addReducers({\n [PLUGIN_ID]: reducer,\n });\n\n app.addMenuLink({\n to: PLUGIN_ID,\n icon: Feather,\n intlLabel: {\n id: `content-manager.plugin.name`,\n defaultMessage: 'Content Manager',\n },\n permissions: [],\n position: 1,\n });\n\n app.router.addRoute({\n path: 'content-manager/*',\n lazy: async () => {\n const { Layout } = await import('./layout');\n\n return {\n Component: Layout,\n };\n },\n children: routes,\n });\n\n app.registerPlugin(cm.config);\n\n
|
1
|
+
{"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { CheckCircle, Feather, Pencil, PuzzlePiece } from '@strapi/icons';\n\nimport { PLUGIN_ID } from './constants/plugin';\nimport { ContentManagerPlugin } from './content-manager';\nimport { historyAdmin } from './history';\nimport { reducer } from './modules/reducers';\nimport { previewAdmin } from './preview';\nimport { routes } from './router';\nimport { prefixPluginTranslations } from './utils/translations';\n\nimport type { WidgetArgs } from '@strapi/admin/strapi-admin';\n\n// NOTE: we have to preload it to ensure chunks will have it available as global\nimport 'prismjs';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n const cm = new ContentManagerPlugin();\n\n app.addReducers({\n [PLUGIN_ID]: reducer,\n });\n\n app.addMenuLink({\n to: PLUGIN_ID,\n icon: Feather,\n intlLabel: {\n id: `content-manager.plugin.name`,\n defaultMessage: 'Content Manager',\n },\n permissions: [],\n position: 1,\n });\n\n app.router.addRoute({\n path: 'content-manager/*',\n lazy: async () => {\n const { Layout } = await import('./layout');\n\n return {\n Component: Layout,\n };\n },\n children: routes,\n });\n\n app.registerPlugin(cm.config);\n\n app.widgets.register((widgets: WidgetArgs[]) => {\n const lastEditedWidget: WidgetArgs = {\n icon: Pencil,\n title: {\n id: `${PLUGIN_ID}.widget.last-edited.title`,\n defaultMessage: 'Last edited entries',\n },\n component: async () => {\n const { LastEditedWidget } = await import('./components/Widgets');\n return LastEditedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'last-edited-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n const lastPublishedWidget: WidgetArgs = {\n icon: CheckCircle,\n title: {\n id: `${PLUGIN_ID}.widget.last-published.title`,\n defaultMessage: 'Last published entries',\n },\n component: async () => {\n const { LastPublishedWidget } = await import('./components/Widgets');\n return LastPublishedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'last-published-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n const entriesWidget: WidgetArgs = {\n icon: PuzzlePiece,\n title: {\n id: `${PLUGIN_ID}.widget.chart-entries.title`,\n defaultMessage: 'Entries',\n },\n component: async () => {\n const { ChartEntriesWidget } = await import('./components/Widgets');\n return ChartEntriesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'chart-entries',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n };\n\n const profileInfoIndex = widgets.findIndex(\n (widget) => widget.id === 'profile-info' && widget.pluginId === 'admin'\n );\n\n // Insert chart-entries after the profile-info widget\n if (profileInfoIndex !== -1) {\n const newWidgets: WidgetArgs[] = [...widgets];\n newWidgets.splice(profileInfoIndex + 1, 0, entriesWidget);\n return [lastEditedWidget, lastPublishedWidget, ...newWidgets];\n }\n\n // Fallback: add to the end if the target widget aren't found\n return [lastEditedWidget, lastPublishedWidget, ...widgets, entriesWidget];\n });\n },\n bootstrap(app: any) {\n if (typeof historyAdmin.bootstrap === 'function') {\n historyAdmin.bootstrap(app);\n }\n if (typeof previewAdmin.bootstrap === 'function') {\n previewAdmin.bootstrap(app);\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, PLUGIN_ID),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\nexport * from './exports';\n"],"names":["register","app","cm","ContentManagerPlugin","addReducers","PLUGIN_ID","reducer","addMenuLink","to","icon","Feather","intlLabel","id","defaultMessage","permissions","position","router","addRoute","path","lazy","Layout","Component","children","routes","registerPlugin","config","widgets","lastEditedWidget","Pencil","title","component","LastEditedWidget","pluginId","action","lastPublishedWidget","CheckCircle","LastPublishedWidget","entriesWidget","PuzzlePiece","ChartEntriesWidget","profileInfoIndex","findIndex","widget","newWidgets","splice","bootstrap","historyAdmin","previewAdmin","registerTrads","locales","importedTrads","Promise","all","map","locale","then","default","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
|