UNPKG

@botonic/plugin-contentful

Version:

## What Does This Plugin Do?

82 lines 3.6 kB
import { __awaiter } from "tslib"; import * as cms from '../../cms'; import { CmsException, ContentType, HandoffAgentEmail, HandoffAgentId, } from '../../cms'; import { addCustomFields, ContentfulEntryUtils, } from '../delivery-utils'; import { getTargetCallback } from './callback-delivery'; import { QueueDelivery } from './queue'; import { DeliveryWithReference } from './reference'; export class HandoffDelivery extends DeliveryWithReference { constructor(delivery, queueDelivery, textDelivery, resumeErrors) { super(ContentType.HANDOFF, delivery, resumeErrors); this.queueDelivery = queueDelivery; this.textDelivery = textDelivery; } handoff(id, context) { return __awaiter(this, void 0, void 0, function* () { const entry = yield this.getEntry(id, context, { include: HandoffDelivery.REFERENCES_INCLUDE }); return this.fromEntry(entry, context); }); } onFinish(entry, context) { if (!entry.fields.onFinish) { throw new CmsException(`Handoff ${this.entryId(entry)} has no onFinish`); } return getTargetCallback(entry.fields.onFinish, context); } queue(entry, context) { return __awaiter(this, void 0, void 0, function* () { if (!entry.fields.queue) return undefined; return this.queueDelivery.fromEntry(entry.fields.queue, context); }); } agent(entry) { if (!entry.fields.agent) return undefined; const AGENT_EMAIL_TYPE = 'agentEmail'; const AGENT_ID_TYPE = 'agentId'; const model = ContentfulEntryUtils.getContentModel(entry.fields.agent); switch (model) { case AGENT_EMAIL_TYPE: { const agent = entry.fields.agent; return new HandoffAgentEmail(agent.fields.agentEmail); } case AGENT_ID_TYPE: { const agent = entry.fields.agent; return new HandoffAgentId(agent.fields.agentId); } } return undefined; } message(entry, context) { return __awaiter(this, void 0, void 0, function* () { if (!entry.fields.message) return undefined; return typeof entry.fields.message === 'string' ? entry.fields.message : yield this.textDelivery.fromEntry(entry.fields.message, context); }); } failMessage(entry, context) { return __awaiter(this, void 0, void 0, function* () { if (!entry.fields.failMessage) return undefined; return typeof entry.fields.failMessage === 'string' ? entry.fields.failMessage : yield this.textDelivery.fromEntry(entry.fields.failMessage, context); }); } fromEntry(entry, context) { return __awaiter(this, void 0, void 0, function* () { const fields = entry.fields; const common = ContentfulEntryUtils.commonFieldsFromEntry(entry); const referenceDelivery = { delivery: this.reference, context, }; return addCustomFields(new cms.Handoff(common, this.onFinish(entry, context), yield this.message(entry, context), yield this.failMessage(entry, context), yield this.queue(entry, context), this.agent(entry), fields.shadowing), fields, referenceDelivery, ['onFinish', 'agent', 'queue']); }); } } HandoffDelivery.REFERENCES_INCLUDE = QueueDelivery.REFERENCES_INCLUDE + 3; //# sourceMappingURL=handoff.js.map