@onereach/channel-transformer
Version:
Convert data model between different channels (Slack, Microsoft Teams, Generic...)
35 lines (25 loc) • 1.17 kB
text/typescript
import { IGenericText, IGenericHeader } from "../../../../generic/types";
import { IRWCAnswerComponent } from '../../../types';
import { RWCAnswerComponent } from "../../../classes/v5";
import { getMethods } from "../methods";
import { toHtml } from '../../../../../helpers/md-to-html';
import { escapeHtmlString } from "../../../../../helpers/string-sanitizer";
export const transformText = ( { props }: IGenericText): IRWCAnswerComponent => {
const type = "rwc-text";
const { value, type: textSubtype } = props;
const text = textSubtype === "markdown" ? toHtml(value, true) : value;
return new RWCAnswerComponent({text: escapeHtmlString(text) }, type);
};
export const transformHeader = ( {props, children}: IGenericHeader, isPlain: boolean): string => {
const words = children.map(item => {
const child = getMethods(item.type)(item);
return (child?.message || child?.vBind.text || "");
});
if (isPlain) {
return words.join(" ");
}
const level = props?.level || 3;
const tag = `h${level}`;
const message = words.join(" ");
return `<${tag}>${message}</${tag}>`;
};