UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

152 lines (151 loc) • 14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Publish", { enumerable: true, get: function() { return Publish; } }); const _qs = /*#__PURE__*/ _interop_require_default(require("qs")); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _reacti18next = require("react-i18next"); const _context = require("../../forms/Form/context"); const _Submit = /*#__PURE__*/ _interop_require_default(require("../../forms/Submit")); const _Config = require("../../utilities/Config"); const _DocumentInfo = require("../../utilities/DocumentInfo"); const _Locale = require("../../utilities/Locale"); const _RenderCustomComponent = /*#__PURE__*/ _interop_require_default(require("../../utilities/RenderCustomComponent")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const DefaultPublishButton = ({ id, canPublish, disabled, label, publish })=>{ if (!canPublish) return null; return /*#__PURE__*/ _react.default.createElement(_Submit.default, { buttonId: id, disabled: disabled, onClick: publish, size: "small", type: "button" }, label); }; const Publish = ({ CustomComponent })=>{ const { code } = (0, _Locale.useLocale)(); const { id, collection, global, publishedDoc, unpublishedVersions } = (0, _DocumentInfo.useDocumentInfo)(); const [hasPublishPermission, setHasPublishPermission] = _react.default.useState(false); const { getData, submit } = (0, _context.useForm)(); const modified = (0, _context.useFormModified)(); const { routes: { api }, serverURL } = (0, _Config.useConfig)(); const { t } = (0, _reacti18next.useTranslation)('version'); const hasNewerVersions = unpublishedVersions?.totalDocs > 0; const canPublish = modified || hasNewerVersions || !publishedDoc; const publish = (0, _react.useCallback)(()=>{ void submit({ overrides: { _status: 'published' } }); }, [ submit ]); _react.default.useEffect(()=>{ const fetchPublishAccess = async ()=>{ let docAccessURL; let operation = 'update'; const params = { locale: code || undefined }; if (global) { docAccessURL = `/globals/${global.slug}/access`; } else if (collection) { if (!id) operation = 'create'; docAccessURL = `/${collection.slug}/access${id ? `/${id}` : ''}`; } if (docAccessURL) { const data = getData(); const res = await fetch(`${serverURL}${api}${docAccessURL}?${_qs.default.stringify(params)}`, { body: JSON.stringify({ ...data, _status: 'published' }), credentials: 'include', headers: { 'Content-Type': 'application/json' }, method: 'post' }); const json = await res.json(); const result = Boolean(json?.[operation]?.permission); setHasPublishPermission(result); } else { setHasPublishPermission(true); } }; void fetchPublishAccess(); }, [ api, code, collection, getData, global, id, serverURL ]); return /*#__PURE__*/ _react.default.createElement(_RenderCustomComponent.default, { CustomComponent: CustomComponent, DefaultComponent: DefaultPublishButton, componentProps: { id: 'action-save', DefaultButton: DefaultPublishButton, canPublish: hasPublishPermission, disabled: !canPublish, label: t('publishChanges'), publish } }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL1B1Ymxpc2gvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBxcyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuXG5pbXBvcnQgeyB1c2VGb3JtLCB1c2VGb3JtTW9kaWZpZWQgfSBmcm9tICcuLi8uLi9mb3Jtcy9Gb3JtL2NvbnRleHQnXG5pbXBvcnQgRm9ybVN1Ym1pdCBmcm9tICcuLi8uLi9mb3Jtcy9TdWJtaXQnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQ29uZmlnJ1xuaW1wb3J0IHsgdXNlRG9jdW1lbnRJbmZvIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0RvY3VtZW50SW5mbydcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Mb2NhbGUnXG5pbXBvcnQgUmVuZGVyQ3VzdG9tQ29tcG9uZW50IGZyb20gJy4uLy4uL3V0aWxpdGllcy9SZW5kZXJDdXN0b21Db21wb25lbnQnXG5cbmV4cG9ydCB0eXBlIEN1c3RvbVB1Ymxpc2hCdXR0b25Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFR5cGU8XG4gIERlZmF1bHRQdWJsaXNoQnV0dG9uUHJvcHMgJiB7XG4gICAgRGVmYXVsdEJ1dHRvbjogUmVhY3QuQ29tcG9uZW50VHlwZTxEZWZhdWx0UHVibGlzaEJ1dHRvblByb3BzPlxuICB9XG4+XG5leHBvcnQgdHlwZSBEZWZhdWx0UHVibGlzaEJ1dHRvblByb3BzID0ge1xuICBjYW5QdWJsaXNoOiBib29sZWFuXG4gIGRpc2FibGVkOiBib29sZWFuXG4gIGlkPzogc3RyaW5nXG4gIGxhYmVsOiBzdHJpbmdcbiAgcHVibGlzaDogKCkgPT4gdm9pZFxufVxuY29uc3QgRGVmYXVsdFB1Ymxpc2hCdXR0b246IFJlYWN0LkZDPERlZmF1bHRQdWJsaXNoQnV0dG9uUHJvcHM+ID0gKHtcbiAgaWQsXG4gIGNhblB1Ymxpc2gsXG4gIGRpc2FibGVkLFxuICBsYWJlbCxcbiAgcHVibGlzaCxcbn0pID0+IHtcbiAgaWYgKCFjYW5QdWJsaXNoKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiAoXG4gICAgPEZvcm1TdWJtaXQgYnV0dG9uSWQ9e2lkfSBkaXNhYmxlZD17ZGlzYWJsZWR9IG9uQ2xpY2s9e3B1Ymxpc2h9IHNpemU9XCJzbWFsbFwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgIHtsYWJlbH1cbiAgICA8L0Zvcm1TdWJtaXQ+XG4gIClcbn1cblxudHlwZSBQcm9wcyA9IHtcbiAgQ3VzdG9tQ29tcG9uZW50PzogQ3VzdG9tUHVibGlzaEJ1dHRvblByb3BzXG59XG5cbmV4cG9ydCBjb25zdCBQdWJsaXNoOiBSZWFjdC5GQzxQcm9wcz4gPSAoeyBDdXN0b21Db21wb25lbnQgfSkgPT4ge1xuICBjb25zdCB7IGNvZGUgfSA9IHVzZUxvY2FsZSgpXG4gIGNvbnN0IHsgaWQsIGNvbGxlY3Rpb24sIGdsb2JhbCwgcHVibGlzaGVkRG9jLCB1bnB1Ymxpc2hlZFZlcnNpb25zIH0gPSB1c2VEb2N1bWVudEluZm8oKVxuICBjb25zdCBbaGFzUHVibGlzaFBlcm1pc3Npb24sIHNldEhhc1B1Ymxpc2hQZXJtaXNzaW9uXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB7IGdldERhdGEsIHN1Ym1pdCB9ID0gdXNlRm9ybSgpXG4gIGNvbnN0IG1vZGlmaWVkID0gdXNlRm9ybU1vZGlmaWVkKClcbiAgY29uc3Qge1xuICAgIHJvdXRlczogeyBhcGkgfSxcbiAgICBzZXJ2ZXJVUkwsXG4gIH0gPSB1c2VDb25maWcoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCd2ZXJzaW9uJylcblxuICBjb25zdCBoYXNOZXdlclZlcnNpb25zID0gdW5wdWJsaXNoZWRWZXJzaW9ucz8udG90YWxEb2NzID4gMFxuICBjb25zdCBjYW5QdWJsaXNoID0gbW9kaWZpZWQgfHwgaGFzTmV3ZXJWZXJzaW9ucyB8fCAhcHVibGlzaGVkRG9jXG5cbiAgY29uc3QgcHVibGlzaCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB2b2lkIHN1Ym1pdCh7XG4gICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgX3N0YXR1czogJ3B1Ymxpc2hlZCcsXG4gICAgICB9LFxuICAgIH0pXG4gIH0sIFtzdWJtaXRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hQdWJsaXNoQWNjZXNzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IGRvY0FjY2Vzc1VSTDogc3RyaW5nXG4gICAgICBsZXQgb3BlcmF0aW9uID0gJ3VwZGF0ZSdcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBsb2NhbGU6IGNvZGUgfHwgdW5kZWZpbmVkLFxuICAgICAgfVxuICAgICAgaWYgKGdsb2JhbCkge1xuICAgICAgICBkb2NBY2Nlc3NVUkwgPSBgL2dsb2JhbHMvJHtnbG9iYWwuc2x1Z30vYWNjZXNzYFxuICAgICAgfSBlbHNlIGlmIChjb2xsZWN0aW9uKSB7XG4gICAgICAgIGlmICghaWQpIG9wZXJhdGlvbiA9ICdjcmVhdGUnXG4gICAgICAgIGRvY0FjY2Vzc1VSTCA9IGAvJHtjb2xsZWN0aW9uLnNsdWd9L2FjY2VzcyR7aWQgPyBgLyR7aWR9YCA6ICcnfWBcbiAgICAgIH1cblxuICAgICAgaWYgKGRvY0FjY2Vzc1VSTCkge1xuICAgICAgICBjb25zdCBkYXRhID0gZ2V0RGF0YSgpXG5cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7c2VydmVyVVJMfSR7YXBpfSR7ZG9jQWNjZXNzVVJMfT8ke3FzLnN0cmluZ2lmeShwYXJhbXMpfWAsIHtcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgX3N0YXR1czogJ3B1Ymxpc2hlZCcsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXMuanNvbigpXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEJvb2xlYW4oanNvbj8uW29wZXJhdGlvbl0/LnBlcm1pc3Npb24pXG4gICAgICAgIHNldEhhc1B1Ymxpc2hQZXJtaXNzaW9uKHJlc3VsdClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEhhc1B1Ymxpc2hQZXJtaXNzaW9uKHRydWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdm9pZCBmZXRjaFB1Ymxpc2hBY2Nlc3MoKVxuICB9LCBbYXBpLCBjb2RlLCBjb2xsZWN0aW9uLCBnZXREYXRhLCBnbG9iYWwsIGlkLCBzZXJ2ZXJVUkxdKVxuXG4gIHJldHVybiAoXG4gICAgPFJlbmRlckN1c3RvbUNvbXBvbmVudFxuICAgICAgQ3VzdG9tQ29tcG9uZW50PXtDdXN0b21Db21wb25lbnR9XG4gICAgICBEZWZhdWx0Q29tcG9uZW50PXtEZWZhdWx0UHVibGlzaEJ1dHRvbn1cbiAgICAgIGNvbXBvbmVudFByb3BzPXt7XG4gICAgICAgIGlkOiAnYWN0aW9uLXNhdmUnLFxuICAgICAgICBEZWZhdWx0QnV0dG9uOiBEZWZhdWx0UHVibGlzaEJ1dHRvbixcbiAgICAgICAgY2FuUHVibGlzaDogaGFzUHVibGlzaFBlcm1pc3Npb24sXG4gICAgICAgIGRpc2FibGVkOiAhY2FuUHVibGlzaCxcbiAgICAgICAgbGFiZWw6IHQoJ3B1Ymxpc2hDaGFuZ2VzJyksXG4gICAgICAgIHB1Ymxpc2gsXG4gICAgICB9fVxuICAgIC8+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJQdWJsaXNoIiwiRGVmYXVsdFB1Ymxpc2hCdXR0b24iLCJpZCIsImNhblB1Ymxpc2giLCJkaXNhYmxlZCIsImxhYmVsIiwicHVibGlzaCIsIkZvcm1TdWJtaXQiLCJidXR0b25JZCIsIm9uQ2xpY2siLCJzaXplIiwidHlwZSIsIkN1c3RvbUNvbXBvbmVudCIsImNvZGUiLCJ1c2VMb2NhbGUiLCJjb2xsZWN0aW9uIiwiZ2xvYmFsIiwicHVibGlzaGVkRG9jIiwidW5wdWJsaXNoZWRWZXJzaW9ucyIsInVzZURvY3VtZW50SW5mbyIsImhhc1B1Ymxpc2hQZXJtaXNzaW9uIiwic2V0SGFzUHVibGlzaFBlcm1pc3Npb24iLCJSZWFjdCIsInVzZVN0YXRlIiwiZ2V0RGF0YSIsInN1Ym1pdCIsInVzZUZvcm0iLCJtb2RpZmllZCIsInVzZUZvcm1Nb2RpZmllZCIsInJvdXRlcyIsImFwaSIsInNlcnZlclVSTCIsInVzZUNvbmZpZyIsInQiLCJ1c2VUcmFuc2xhdGlvbiIsImhhc05ld2VyVmVyc2lvbnMiLCJ0b3RhbERvY3MiLCJ1c2VDYWxsYmFjayIsIm92ZXJyaWRlcyIsIl9zdGF0dXMiLCJ1c2VFZmZlY3QiLCJmZXRjaFB1Ymxpc2hBY2Nlc3MiLCJkb2NBY2Nlc3NVUkwiLCJvcGVyYXRpb24iLCJwYXJhbXMiLCJsb2NhbGUiLCJ1bmRlZmluZWQiLCJzbHVnIiwiZGF0YSIsInJlcyIsImZldGNoIiwicXMiLCJzdHJpbmdpZnkiLCJib2R5IiwiSlNPTiIsImNyZWRlbnRpYWxzIiwiaGVhZGVycyIsIm1ldGhvZCIsImpzb24iLCJyZXN1bHQiLCJCb29sZWFuIiwicGVybWlzc2lvbiIsIlJlbmRlckN1c3RvbUNvbXBvbmVudCIsIkRlZmF1bHRDb21wb25lbnQiLCJjb21wb25lbnRQcm9wcyIsIkRlZmF1bHRCdXR0b24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBMkNhQTs7O2VBQUFBOzs7MkRBM0NFOytEQUNvQjs4QkFDSjt5QkFFVTsrREFDbEI7d0JBQ0c7OEJBQ007d0JBQ047OEVBQ1E7Ozs7Ozs7Ozs7Ozs7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