All files / src/flow/actions play_audio.ts

100% Statements 47/47
60% Branches 3/5
100% Functions 2/2
100% Lines 47/47

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48132x 1x 1x 132x 132x 132x 132x 132x 132x 132x 132x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 4x 4x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x  
import { html } from 'lit-html';
import { ActionConfig, ACTION_GROUPS, FormData, FlowTypes } from '../types';
import { Node, PlayAudio } from '../../store/flow-definition';
import { renderHighlightedText } from '../utils';
 
export const play_audio: ActionConfig = {
  name: 'Play Recording',
  group: ACTION_GROUPS.send,
  flowTypes: [FlowTypes.VOICE],
  render: (_node: Node, action: PlayAudio) => {
    return html`
      <div style="display: flex; align-items: center; gap: 0.3em;">
        <temba-icon name="recording" size="1"></temba-icon>
        <div
          style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;"
          title="${action.audio_url || ''}"
        >
          ${renderHighlightedText(action.audio_url || '', true)}
        </div>
      </div>
    `;
  },
  form: {
    audio_url: {
      type: 'text',
      label: 'Recording URL',
      required: true,
      maxLength: 8192,
      evaluated: true
    }
  },
  layout: ['audio_url'],
  toFormData: (action: PlayAudio) => {
    return {
      uuid: action.uuid,
      audio_url: action.audio_url || ''
    };
  },
  fromFormData: (data: FormData) => {
    return {
      uuid: data.uuid,
      type: 'play_audio',
      audio_url: (data.audio_url || '').trim()
    } as PlayAudio;
  },
  localizable: ['audio_url']
};