message-text.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { __ } from 'i18n/index.js';
  2. import { getOOBURLMarkup } from 'utils/html.js';
  3. import { html } from 'lit';
  4. const tplEditedIcon = (el) => {
  5. const i18n_edited = __('This message has been edited');
  6. return html`<converse-icon title="${ i18n_edited }" class="fa fa-edit chat-msg__edit-modal" @click=${el.showMessageVersionsModal} size="1em"></converse-icon>`;
  7. }
  8. const tplCheckmark = () => {
  9. return html`<converse-icon size="1em" color="var(--chat-color)" class="fa fa-check chat-msg__receipt"></converse-icon>`
  10. }
  11. export default (el) => {
  12. const i18n_show = __('Show more');
  13. const is_groupchat_message = (el.model.get('type') === 'groupchat');
  14. const i18n_show_less = __('Show less');
  15. const tplSpoilerHint = html`
  16. <div class="chat-msg__spoiler-hint">
  17. <span class="spoiler-hint">${el.model.get('spoiler_hint')}</span>
  18. <a class="badge badge-info spoiler-toggle" href="#" @click=${el.toggleSpoilerMessage}>
  19. <converse-icon size="1em" color="var(--background)" class="fa ${el.model.get('is_spoiler_visible') ? 'fa-eye-slash' : 'fa-eye'}"></converse-icon>
  20. ${ el.model.get('is_spoiler_visible') ? i18n_show_less : i18n_show }
  21. </a>
  22. </div>
  23. `;
  24. const spoiler_classes = el.model.get('is_spoiler') ? `spoiler ${el.model.get('is_spoiler_visible') ? '' : 'hidden'}` : '';
  25. const text = el.model.getMessageText();
  26. const show_oob = el.model.get('oob_url') && text !== el.model.get('oob_url');
  27. return html`
  28. ${ el.model.get('is_spoiler') ? tplSpoilerHint : '' }
  29. ${ el.model.get('subject') ? html`<div class="chat-msg__subject">${el.model.get('subject')}</div>` : '' }
  30. <span class="chat-msg__body--wrapper">
  31. <converse-chat-message-body
  32. class="chat-msg__text ${el.model.get('is_only_emojis') ? 'chat-msg__text--larger' : ''} ${spoiler_classes}"
  33. .model="${el.model}"
  34. hide_url_previews=${el.model.get('hide_url_previews')}
  35. ?is_me_message=${el.model.isMeCommand()}
  36. text="${text}"></converse-chat-message-body>
  37. ${ (el.model.get('received') && !el.model.isMeCommand() && !is_groupchat_message) ? tplCheckmark() : '' }
  38. ${ (el.model.get('edited')) ? tplEditedIcon(el) : '' }
  39. </span>
  40. ${ show_oob ? html`<div class="chat-msg__media">${getOOBURLMarkup(el.model.get('oob_url'))}</div>` : '' }
  41. <div class="chat-msg__error">${ el.model.get('error_text') || el.model.get('error') }</div>
  42. `;
  43. }