payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
152 lines (151 loc) • 14 kB
JavaScript
;
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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