UNPKG

@onereach/channel-transformer

Version:

Convert data model between different channels (Slack, Microsoft Teams, Generic...)

35 lines (33 loc) 1.35 kB
import { IGenericCard, IGenericButton, IGenericText, IGenericHeader, IGenericImage } from '../../../../generic/types'; import { IRWCAnswerComponent } from '../../../types'; import { getAnswerComponent } from '../../../helpers/answer-types'; import { getMethods } from '../methods'; export const transformCard = ({ props, children }: IGenericCard): IRWCAnswerComponent => { const initCard = getAnswerComponent('rwc-card'); Object.assign(initCard.vBind, props.rwc); return children?.reduce( (card, item: IGenericText|IGenericImage|IGenericButton|IGenericHeader) => { switch (item.type) { case 'image': card.vBind.image.push({ // get image data, not an image element ...item.props?.rwc, location: item.props?.url, linkUrl: item.props?.url, }); break; case 'header': card.vBind.title = getMethods('header')(item, true)?.message; // get text only without h_ tags break; case 'text': card.vBind.description = item.props.value; card.vBind.text = item.props.value; break; case 'button': card.vBind.button = item.props.label; card.vBind.sendValue = item.props.value; card.vBind.value = item.props.value; break; } return card; }, initCard); };