@botonic/plugin-flow-builder
Version:
Use Flow Builder to show your contents
85 lines • 5.14 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FlowWhatsappCtaUrlButtonNode = void 0;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const core_1 = require("@botonic/core");
const react_1 = require("@botonic/react");
const tracking_1 = require("../tracking");
const content_fields_base_1 = require("./content-fields-base");
const flow_button_1 = require("./flow-button");
class FlowWhatsappCtaUrlButtonNode extends content_fields_base_1.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.footer = this.getTextByLocale(locale, component.content.footer);
const button = flow_button_1.FlowButton.fromHubtypeCMS(component.content.button, locale, cmsApi);
whatsappCtaUrlButton.displayText = button.text;
const urlId = flow_button_1.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 = react_1.WhatsappCTAUrlHeaderType.Text;
}
whatsappCtaUrlButton.headerType = component.content
.header_type;
if (component.content.header_type === react_1.WhatsappCTAUrlHeaderType.Text) {
whatsappCtaUrlButton.header = this.getTextByLocale(locale, component.content.header);
}
if (component.content.header_type === react_1.WhatsappCTAUrlHeaderType.Image &&
component.content.header_image) {
whatsappCtaUrlButton.headerImage = this.getAssetByLocale(locale, component.content.header_image);
}
if (component.content.header_type === react_1.WhatsappCTAUrlHeaderType.Video &&
component.content.header_video) {
whatsappCtaUrlButton.headerVideo = this.getAssetByLocale(locale, component.content.header_video);
}
if (component.content.header_type === react_1.WhatsappCTAUrlHeaderType.Document &&
component.content.header_document) {
whatsappCtaUrlButton.headerDocument = this.getAssetByLocale(locale, component.content.header_document);
}
}
trackFlow(request) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
yield (0, tracking_1.trackOneContent)(request, this);
});
}
toBotonic(id, request) {
if (!(0, core_1.isWhatsapp)(request.session)) {
return ((0, jsx_runtime_1.jsxs)(react_1.Text, { children: [this.text, (0, jsx_runtime_1.jsx)(react_1.Button, Object.assign({ url: this.url }, { children: this.displayText }))] }));
}
if (this.headerType === react_1.WhatsappCTAUrlHeaderType.Image &&
this.headerImage) {
return ((0, jsx_runtime_1.jsx)(react_1.WhatsappCTAUrlButton, { body: this.text, headerType: this.headerType, headerImage: this.headerImage, footer: this.footer, displayText: this.displayText, url: this.url }, id));
}
if (this.headerType === react_1.WhatsappCTAUrlHeaderType.Video &&
this.headerVideo) {
return ((0, jsx_runtime_1.jsx)(react_1.WhatsappCTAUrlButton, { body: this.text, headerType: this.headerType, headerVideo: this.headerVideo, footer: this.footer, displayText: this.displayText, url: this.url }, id));
}
if (this.headerType === react_1.WhatsappCTAUrlHeaderType.Document &&
this.headerDocument) {
return ((0, jsx_runtime_1.jsx)(react_1.WhatsappCTAUrlButton, { body: this.text, headerType: this.headerType, headerDocument: this.headerDocument, footer: this.footer, displayText: this.displayText, url: this.url }, id));
}
if (this.headerType === react_1.WhatsappCTAUrlHeaderType.Text && this.header) {
return ((0, jsx_runtime_1.jsx)(react_1.WhatsappCTAUrlButton, { body: this.text, header: this.header, headerType: this.headerType, footer: this.footer, displayText: this.displayText, url: this.url }, id));
}
return ((0, jsx_runtime_1.jsx)(react_1.WhatsappCTAUrlButton, { body: this.text, footer: this.footer, displayText: this.displayText, url: this.url }, id));
}
}
exports.FlowWhatsappCtaUrlButtonNode = FlowWhatsappCtaUrlButtonNode;
//# sourceMappingURL=flow-whatsapp-cta-url-button.js.map