summaryrefslogtreecommitdiffstats
path: root/roles/reverseproxy/files/conversejs/src/headless/shared/api/presence.js
diff options
context:
space:
mode:
authorMatthieu Saulnier <fantom@fedoraproject.org>2023-09-10 11:02:37 +0200
committerMatthieu Saulnier <fantom@fedoraproject.org>2023-09-10 11:02:37 +0200
commitc3d25357d4a61a26609480bf84a67a56d1a17fc3 (patch)
tree4209832fa639354a1c905ca6d3ca899e889df90e /roles/reverseproxy/files/conversejs/src/headless/shared/api/presence.js
parent78a34e844540a6f24a42e49bcc00ce00cd6ec955 (diff)
downloadplaybooks-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.js35
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));
+ }
+ }
+ }
+}