utils.js 973 B

12345678910111213141516171819202122
  1. import sizzle from 'sizzle';
  2. import { converse } from "@converse/headless";
  3. import { getAttributes } from '@converse/headless/shared/parsers';
  4. const { Strophe, u } = converse.env;
  5. export function parseForCommands (stanza) {
  6. const items = sizzle(`query[xmlns="${Strophe.NS.DISCO_ITEMS}"][node="${Strophe.NS.ADHOC}"] item`, stanza);
  7. return items.map(getAttributes)
  8. }
  9. export function getCommandFields (iq, jid) {
  10. const cmd_el = sizzle(`command[xmlns="${Strophe.NS.ADHOC}"]`, iq).pop();
  11. const data = {
  12. sessionid: cmd_el.getAttribute('sessionid'),
  13. instructions: sizzle('x[type="form"][xmlns="jabber:x:data"] instructions', cmd_el).pop()?.textContent,
  14. fields: sizzle('x[type="form"][xmlns="jabber:x:data"] field', cmd_el)
  15. .map(f => u.xForm2TemplateResult(f, cmd_el, { domain: jid })),
  16. actions: Array.from(cmd_el.querySelector('actions')?.children).map((a) => a.nodeName.toLowerCase()) ?? []
  17. }
  18. return data;
  19. }