diff options
author | Matthieu Saulnier <fantom@fedoraproject.org> | 2023-09-10 11:02:37 +0200 |
---|---|---|
committer | Matthieu Saulnier <fantom@fedoraproject.org> | 2023-09-10 11:02:37 +0200 |
commit | c3d25357d4a61a26609480bf84a67a56d1a17fc3 (patch) | |
tree | 4209832fa639354a1c905ca6d3ca899e889df90e /roles/reverseproxy/files/conversejs/src/headless/shared/api/presence.js | |
parent | 78a34e844540a6f24a42e49bcc00ce00cd6ec955 (diff) | |
download | playbooks-ansible-c3d25357d4a61a26609480bf84a67a56d1a17fc3.tar.gz playbooks-ansible-c3d25357d4a61a26609480bf84a67a56d1a17fc3.tar.xz playbooks-ansible-c3d25357d4a61a26609480bf84a67a56d1a17fc3.zip |
Add conversejs deployment
Diffstat (limited to 'roles/reverseproxy/files/conversejs/src/headless/shared/api/presence.js')
-rw-r--r-- | roles/reverseproxy/files/conversejs/src/headless/shared/api/presence.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/roles/reverseproxy/files/conversejs/src/headless/shared/api/presence.js b/roles/reverseproxy/files/conversejs/src/headless/shared/api/presence.js new file mode 100644 index 0000000..e9180fa --- /dev/null +++ b/roles/reverseproxy/files/conversejs/src/headless/shared/api/presence.js @@ -0,0 +1,35 @@ +import { _converse, api } from '../../core.js'; + + +export default { + /** + * @namespace _converse.api.user.presence + * @memberOf _converse.api.user + */ + presence: { + /** + * Send out a presence stanza + * @method _converse.api.user.presence.send + * @param { String } [type] + * @param { String } [to] + * @param { String } [status] - An optional status message + * @param { Array<Element>|Array<Strophe.Builder>|Element|Strophe.Builder } [child_nodes] + * Nodes(s) to be added as child nodes of the `presence` XML element. + */ + async send (type, to, status, child_nodes) { + await api.waitUntil('statusInitialized'); + if (child_nodes && !Array.isArray(child_nodes)) { + child_nodes = [child_nodes]; + } + const model = _converse.xmppstatus + const presence = await model.constructPresence(type, to, status); + child_nodes?.map(c => c?.tree() ?? c).forEach(c => presence.cnode(c).up()); + api.send(presence); + + if (['away', 'chat', 'dnd', 'online', 'xa', undefined].includes(type)) { + const mucs = await api.rooms.get(); + mucs.forEach(muc => muc.sendStatusPresence(type, status, child_nodes)); + } + } + } +} |