UNPKG

@onereach/channel-transformer

Version:

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

75 lines (68 loc) 1.48 kB
import { IGenericWrapper } from '../../generic/types/wrapper'; import { ISlackBlockKitData } from '../types/index'; import { transformText } from './items/text-object'; import { getMethods } from './methods'; function mapBlocks(blocks: Array<any>): Array<any> { const res = []; for (let i = 0; i < blocks.length; i++) { const block = blocks[i]; res.push(getMethods(block.type)(block)); } return res.length > 0 ? res : [{}]; } export function transformSlackToGeneric({ blocks, attachments, type, title, submit, close }: ISlackBlockKitData): IGenericWrapper { if (!type && blocks) { return { type: 'wrapper', children: mapBlocks(blocks), props: { slack: { type: 'message' } } }; } if (attachments) { return { type: 'wrapper', children: attachments.map(item => mapBlocks(item.blocks)), props: { slack: { type: 'attachments' } } }; } if (type === 'home') { return { type: 'wrapper', children: mapBlocks(blocks), props: { slack: { type: 'home' } } }; } if (type === 'modal') { return { type: 'wrapper', children: mapBlocks(blocks), props: { slack: { type: "modal", title: transformText(title), submit: transformText(submit), close: transformText(close) } } }; } }