Converse converse.js

Source: headless/plugins/headlines/utils.js

  1. import { _converse, api } from "@converse/headless/core";
  2. import { isHeadline, isServerMessage } from '@converse/headless/shared/parsers';
  3. import { parseMessage } from '@converse/headless/plugins/chat/parsers';
  4. /**
  5. * Handler method for all incoming messages of type "headline".
  6. * @param { Element } stanza
  7. */
  8. export async function onHeadlineMessage (stanza) {
  9. if (isHeadline(stanza) || isServerMessage(stanza)) {
  10. const from_jid = stanza.getAttribute('from');
  11. await api.waitUntil('rosterInitialized')
  12. if (from_jid.includes('@') &&
  13. !_converse.roster.get(from_jid) &&
  14. !api.settings.get("allow_non_roster_messaging")) {
  15. return;
  16. }
  17. if (stanza.querySelector('body') === null) {
  18. // Avoid creating a chat box if we have nothing to show inside it.
  19. return;
  20. }
  21. const chatbox = _converse.chatboxes.create({
  22. 'id': from_jid,
  23. 'jid': from_jid,
  24. 'type': _converse.HEADLINES_TYPE,
  25. 'from': from_jid
  26. });
  27. const attrs = await parseMessage(stanza, _converse);
  28. await chatbox.createMessage(attrs);
  29. api.trigger('message', {chatbox, stanza, attrs});
  30. }
  31. }