import { emojiTokenSrcMap } from './emojiMap';

export function decodeText(payload: { text: string }) {
  const renderDom = [];
  // 文本消息
  let temp = payload.text;
  let left = -1;
  let right = -1;
  while (temp !== '') {
    left = temp.indexOf('[');
    right = temp.indexOf(']');
    switch (left) {
      case 0:
        if (right === -1) {
          renderDom.push({
            name: 'text',
            text: temp,
          });
          temp = '';
        } else {
          const emojiKey = temp.slice(0, right + 1);
          const emojiSrc = emojiTokenSrcMap[emojiKey];

          if (emojiSrc) {
            renderDom.push({
              name: 'img',
              src: emojiSrc,
              key: emojiKey,
            });
            temp = temp.substring(right + 1);
          } else {
            renderDom.push({
              name: 'text',
              text: '[',
            });
            temp = temp.slice(1);
          }
        }
        break;
      case -1:
        renderDom.push({
          name: 'text',
          text: temp,
        });
        temp = '';
        break;
      default:
        renderDom.push({
          name: 'text',
          text: temp.slice(0, left),
        });
        temp = temp.substring(left);
        break;
    }
  }

  return renderDom;
}
