@onereach/channel-transformer
Version:
Convert data model between different channels (Slack, Microsoft Teams, Generic...)
54 lines (47 loc) • 1.09 kB
text/typescript
// DOC: https://api.slack.com/reference/block-kit/blocks#section
import { IGenericSection } from '../../../generic/types';
import { ISlackSection } from '../../types';
import { transformText } from './text-object';
import { getMethods } from '../methods';
export const transformSection = ({
text,
block_id,
fields,
accessory
}: ISlackSection): IGenericSection => {
const res: IGenericSection = {
type: 'section',
children: [],
props: {
slack: {
type: 'section'
}
}
};
if (text) {
res.children.push(transformText(text));
}
if (accessory) {
res.children.push(getMethods(accessory.type)(accessory));
}
if (fields) {
const fieldSection = {
type: 'section',
props: {
column: 2,
slack: {
type: 'fields'
}
},
children: []
};
for (let i = 0; i < fields.length; i++) {
fieldSection.children.push(transformText(fields[i]));
}
res.children.push(fieldSection);
}
if (block_id) {
res.props.slack.block_id = block_id;
}
return res;
};