UNPKG

@botonic/plugin-contentful

Version:

Botonic Plugin Contentful is one of the **[available](https://github.com/hubtype/botonic/tree/master/packages)** plugins for Botonic. **[Contentful](http://www.contentful.com)** is a CMS (Content Management System) which manages contents of a great variet

86 lines 3.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HandoffDelivery = void 0; const tslib_1 = require("tslib"); const cms = tslib_1.__importStar(require("../../cms")); const cms_1 = require("../../cms"); const delivery_utils_1 = require("../delivery-utils"); const callback_delivery_1 = require("./callback-delivery"); const queue_1 = require("./queue"); const reference_1 = require("./reference"); class HandoffDelivery extends reference_1.DeliveryWithReference { constructor(delivery, queueDelivery, textDelivery, resumeErrors) { super(cms_1.ContentType.HANDOFF, delivery, resumeErrors); this.queueDelivery = queueDelivery; this.textDelivery = textDelivery; } handoff(id, context) { return tslib_1.__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 cms_1.CmsException(`Handoff ${this.entryId(entry)} has no onFinish`); } return (0, callback_delivery_1.getTargetCallback)(entry.fields.onFinish, context); } queue(entry, context) { return tslib_1.__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 = delivery_utils_1.ContentfulEntryUtils.getContentModel(entry.fields.agent); switch (model) { case AGENT_EMAIL_TYPE: { const agent = entry.fields.agent; return new cms_1.HandoffAgentEmail(agent.fields.agentEmail); } case AGENT_ID_TYPE: { const agent = entry.fields.agent; return new cms_1.HandoffAgentId(agent.fields.agentId); } } return undefined; } message(entry, context) { return tslib_1.__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 tslib_1.__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 tslib_1.__awaiter(this, void 0, void 0, function* () { const fields = entry.fields; const common = delivery_utils_1.ContentfulEntryUtils.commonFieldsFromEntry(entry); const referenceDelivery = { delivery: this.reference, context, }; return (0, delivery_utils_1.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']); }); } } exports.HandoffDelivery = HandoffDelivery; HandoffDelivery.REFERENCES_INCLUDE = queue_1.QueueDelivery.REFERENCES_INCLUDE + 3; //# sourceMappingURL=handoff.js.map