@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
JavaScript
;
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