Add status
and show
elements to MUC join presence in status plugin
and not in the muc plugin. This decouples the plugins more. Ideally we can remove the status plugin entirely from a customized Converse build (but we're not there yet).
This commit is contained in:
parent
4d4e0ffc8d
commit
f0297fe075
@ -14,6 +14,7 @@ function onDiscoInfoRequest (stanza) {
|
|||||||
if (from !== null) {
|
if (from !== null) {
|
||||||
iqresult.attrs({'to': from});
|
iqresult.attrs({'to': from});
|
||||||
}
|
}
|
||||||
|
|
||||||
iqresult.c('query', attrs);
|
iqresult.c('query', attrs);
|
||||||
_converse.disco._identities.forEach(identity => {
|
_converse.disco._identities.forEach(identity => {
|
||||||
const attrs = {
|
const attrs = {
|
||||||
|
@ -30,7 +30,6 @@ export async function getAffiliationList (affiliation, muc_jid) {
|
|||||||
const err_msg = __('Error: timeout while fetching %1s list for MUC %2s', affiliation, muc_jid);
|
const err_msg = __('Error: timeout while fetching %1s list for MUC %2s', affiliation, muc_jid);
|
||||||
const err = new Error(err_msg);
|
const err = new Error(err_msg);
|
||||||
log.warn(err_msg);
|
log.warn(err_msg);
|
||||||
log.warn(result);
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
if (u.isErrorStanza(result)) {
|
if (u.isErrorStanza(result)) {
|
||||||
|
@ -206,17 +206,13 @@ const ChatRoomMixin = {
|
|||||||
stanza.cnode(Strophe.xmlElement('password', [], password));
|
stanza.cnode(Strophe.xmlElement('password', [], password));
|
||||||
}
|
}
|
||||||
stanza.up(); // Go one level up, out of the `x` element.
|
stanza.up(); // Go one level up, out of the `x` element.
|
||||||
|
/**
|
||||||
const status = _converse.xmppstatus.get('status');
|
* *Hook* which allows plugins to update an outgoing MUC join presence stanza
|
||||||
if (['away', 'chat', 'dnd', 'xa'].includes(status)) {
|
* @event _converse#constructedMUCPresence
|
||||||
stanza.c('show').t(status).up();
|
* @param { _converse.ChatRoom } - The MUC from which this message stanza is being sent.
|
||||||
}
|
* @param { XMLElement } stanza - The stanza which will be sent out
|
||||||
const status_message = _converse.xmppstatus.get('status_message');
|
*/
|
||||||
if (status_message) {
|
stanza = await api.hook('constructedMUCPresence', this, stanza);
|
||||||
stanza.c('status').t(status_message).up();
|
|
||||||
}
|
|
||||||
|
|
||||||
stanza = await api.hook('constructedMUCPresence', null, stanza);
|
|
||||||
return stanza;
|
return stanza;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -24,10 +24,11 @@ function pong (ping) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function registerPongHandler () {
|
export function registerPongHandler () {
|
||||||
if (_converse.connection.disco !== undefined) {
|
const { connection } = _converse;
|
||||||
|
if (connection.disco) {
|
||||||
api.disco.own.features.add(Strophe.NS.PING);
|
api.disco.own.features.add(Strophe.NS.PING);
|
||||||
}
|
}
|
||||||
return _converse.connection.addHandler(pong, Strophe.NS.PING, "iq", "get");
|
return connection.addHandler(pong, Strophe.NS.PING, "iq", "get");
|
||||||
}
|
}
|
||||||
|
|
||||||
export function registerPingHandler () {
|
export function registerPingHandler () {
|
||||||
|
@ -5,7 +5,14 @@
|
|||||||
import XMPPStatus from './status.js';
|
import XMPPStatus from './status.js';
|
||||||
import status_api from './api.js';
|
import status_api from './api.js';
|
||||||
import { _converse, api, converse } from '@converse/headless/core';
|
import { _converse, api, converse } from '@converse/headless/core';
|
||||||
import { initStatus, onEverySecond, onUserActivity, registerIntervalHandler, sendCSI } from './utils.js';
|
import {
|
||||||
|
addStatusToMUCJoinPresence,
|
||||||
|
initStatus,
|
||||||
|
onEverySecond,
|
||||||
|
onUserActivity,
|
||||||
|
registerIntervalHandler,
|
||||||
|
sendCSI
|
||||||
|
} from './utils.js';
|
||||||
|
|
||||||
const { Strophe } = converse.env;
|
const { Strophe } = converse.env;
|
||||||
|
|
||||||
@ -54,5 +61,6 @@ converse.plugins.add('converse-status', {
|
|||||||
|
|
||||||
api.listen.on('connected', () => initStatus(false));
|
api.listen.on('connected', () => initStatus(false));
|
||||||
api.listen.on('reconnected', () => initStatus(true));
|
api.listen.on('reconnected', () => initStatus(true));
|
||||||
|
api.listen.on('constructedMUCPresence', addStatusToMUCJoinPresence);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -126,3 +126,17 @@ export function registerIntervalHandler () {
|
|||||||
window.addEventListener(unloadevent, () => _converse.session?.save('active', false));
|
window.addEventListener(unloadevent, () => _converse.session?.save('active', false));
|
||||||
_converse.everySecondTrigger = window.setInterval(_converse.onEverySecond, 1000);
|
_converse.everySecondTrigger = window.setInterval(_converse.onEverySecond, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function addStatusToMUCJoinPresence (_, stanza) {
|
||||||
|
const { xmppstatus } = _converse;
|
||||||
|
|
||||||
|
const status = xmppstatus.get('status');
|
||||||
|
if (['away', 'chat', 'dnd', 'xa'].includes(status)) {
|
||||||
|
stanza.c('show').t(status).up();
|
||||||
|
}
|
||||||
|
const status_message = xmppstatus.get('status_message');
|
||||||
|
if (status_message) {
|
||||||
|
stanza.c('status').t(status_message).up();
|
||||||
|
}
|
||||||
|
return stanza;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user