@onereach/channel-transformer
Version:
Convert data model between different channels (Slack, Microsoft Teams, Generic...)
35 lines (33 loc) • 1.35 kB
text/typescript
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);
};