import { IGenericWrapper } from '../../generic/types/wrapper';
import { IMessageEvent } from '../types/index';

import  { getMethods } from './methods';

function mapBlocks(blocks: Array<any>): Array<IMessageEvent> {
  const result = [];
  for (let i = 0; i < blocks.length; i++) {
    const block = blocks[i];
    result.push(getMethods(block.type)(block));
  }

  return result.length > 0 
    ? result.reduce((acc, item)  => acc.concat(item), [])
    : [];
}

export function transformGenericToSalesforce ({ children }: IGenericWrapper) {
  return {
    messages: mapBlocks(children)
  };
}
