UNPKG

@botonic/plugin-flow-builder

Version:

Botonic plugin for **Hubtype Flow Builder**: run and bridge flow-driven logic from bots on the **current** line.

83 lines 4.03 kB
import { __awaiter } from "tslib"; import { BotServerMessageFactory, } from '@botonic/core'; import { WhatsappHeaderType } from '@botonic/shared'; import { trackOneContent } from '../tracking'; import { ContentFieldsBase } from './content-fields-base'; import { FlowButton } from './flow-button'; export class FlowWhatsappCtaUrlButtonNode extends ContentFieldsBase { constructor() { super(...arguments); this.text = ''; this.displayText = ''; this.url = ''; } static fromHubtypeCMS(component, locale, cmsApi) { const whatsappCtaUrlButton = new FlowWhatsappCtaUrlButtonNode(component.id); whatsappCtaUrlButton.code = component.code; whatsappCtaUrlButton.text = this.getTextByLocale(locale, component.content.text); FlowWhatsappCtaUrlButtonNode.setHeader(whatsappCtaUrlButton, component, locale); whatsappCtaUrlButton.header = this.getTextByLocale(locale, component.content.header); whatsappCtaUrlButton.footer = this.getTextByLocale(locale, component.content.footer); const button = FlowButton.fromHubtypeCMS(component.content.button, locale, cmsApi); whatsappCtaUrlButton.displayText = button.text; const urlId = FlowButton.getUrlId(component.content.button, locale); if (urlId) { const urlNode = cmsApi.getNodeById(urlId); whatsappCtaUrlButton.url = urlNode.content.url; } whatsappCtaUrlButton.followUp = component.follow_up; return whatsappCtaUrlButton; } static setHeader(whatsappCtaUrlButton, component, locale) { // If header is set, set header_type to text, this is need to be compatible with the old version of the component if (component.content.header.length > 0) { component.content.header_type = WhatsappHeaderType.Text; } whatsappCtaUrlButton.headerType = component.content .header_type; if (component.content.header_type === WhatsappHeaderType.Text) { whatsappCtaUrlButton.header = this.getTextByLocale(locale, component.content.header); } if (component.content.header_type === WhatsappHeaderType.Image && component.content.header_image) { whatsappCtaUrlButton.headerImage = this.getAssetByLocale(locale, component.content.header_image); } if (component.content.header_type === WhatsappHeaderType.Video && component.content.header_video) { whatsappCtaUrlButton.headerVideo = this.getAssetByLocale(locale, component.content.header_video); } if (component.content.header_type === WhatsappHeaderType.Document && component.content.header_document) { whatsappCtaUrlButton.headerDocument = this.getAssetByLocale(locale, component.content.header_document); } } trackFlow(botonicContext) { return __awaiter(this, void 0, void 0, function* () { yield trackOneContent(botonicContext, this); }); } processContent(botonicContext) { return __awaiter(this, void 0, void 0, function* () { yield this.trackFlow(botonicContext); return this.filterContent(botonicContext, this); }); } toBotonic(botonicContext) { return __awaiter(this, void 0, void 0, function* () { const replacedText = this.replaceVariables(this.text, botonicContext); return BotServerMessageFactory.createWhatsappCTAUrlButton({ header: this.header, headerType: this.headerType, headerImage: this.headerImage, headerVideo: this.headerVideo, headerDocument: this.headerDocument, body: replacedText, footer: this.footer, displayText: this.displayText, url: this.url, // TODO: Add metadata at this point? }); }); } } //# sourceMappingURL=flow-whatsapp-cta-url-button.js.map