UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

2 lines 2.77 kB
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../libs/repositories/document-publish-operations.mjs";import n from"../../libs/repositories/queue-jobs.mjs";import r from"../collections/get-single-instance.mjs";import{hasCollectionPermission as i,unresolvedPublishOperationExecutionStatuses as a}from"./helpers/index.mjs";import o from"./helpers/create-event.mjs";import s from"./helpers/normalize-comment.mjs";import c from"./notifications.mjs";const l=async(l,u)=>{let d=new t(l.db.client,l.config.db),f=new n(l.db.client,l.config.db),p=await d.selectSingleDetailed({tenantKey:l.request.tenantKey,where:[{key:`lucid_document_publish_operations.id`,operator:`=`,value:u.id}]});if(p.error)return p;if(!p.data||![`pending`,`approved`].includes(p.data.status)||!a.some(e=>e===p.data?.execution_status))return{error:{type:`basic`,message:e(`server:core.publish.requests.not.pending`),status:400},data:void 0};let m=r(l,{key:p.data.collection_key});if(m.error)return m;let h=p.data.requested_by===u.user.id,g=p.data.status===`approved`&&p.data.operation_type===`direct`?`publish`:`review`,_=i({user:u.user,collection:m.data,action:g});if(!u.system&&!h&&!_)return{error:{type:`basic`,name:e(`server:core.collections.permission.error.name`),message:e(`server:core.collections.permission.error.message`,{data:{collection:p.data.collection_key,action:g}}),status:403},data:void 0};let v=s(u.comment),y=new Date().toISOString();if(p.data.scheduled_job_id){let e=await f.updateSingle({where:[{key:`job_id`,operator:`=`,value:p.data.scheduled_job_id}],data:{status:`cancelled`,updated_at:y}});if(e.error)return e}let b=await d.updateSingle({where:[{key:`id`,operator:`=`,value:p.data.id}],data:{status:`cancelled`,execution_status:`cancelled`,scheduled_job_id:null,decided_by:u.system?null:u.user.id,decision_comment:v.value,decided_at:y,updated_at:y}});if(b.error)return b;let x=await o(l,{operation:p.data,collectionInstance:m.data,event:{type:`cancelled`,userId:u.system?null:u.user.id,comment:v.text,metadata:{system:u.system===!0}}});if(x.error)return x;let S=h?p.data.assignees.map(e=>({id:e.user_id,email:e.email??null})):p.data.requested_by&&p.data.requested_by_email?[{id:p.data.requested_by,email:p.data.requested_by_email}]:[],C=await c(l,{operationId:p.data.id,collectionKey:p.data.collection_key,documentId:p.data.document_id,recipients:S,title:e(`server:core.publish.requests.cancelled.title`),message:e(`server:core.publish.requests.cancelled.message`,{data:{collection:p.data.collection_key,documentId:p.data.document_id}}),dedupeAction:`cancelled`,comment:{label:e(`server:core.publish.requests.email.decision.comment`),value:v.text,html:v.html}});return C.error?C:{error:void 0,data:void 0}};export{l as default}; //# sourceMappingURL=cancel.mjs.map