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