MUC: Don't first check if we're registered before unregistering
The IQ stanza being sent to check was in any case incorrect and it doesn't seem necessary.
This commit is contained in:
parent
39d60f05c3
commit
ff1b6d3adf
@ -1543,8 +1543,16 @@ const ChatRoomMixin = {
|
|||||||
return identity_el ? identity_el.getAttribute('name') : null;
|
return identity_el ? identity_el.getAttribute('name') : null;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send an IQ stanza to the MUC to register this user's nickname.
|
||||||
|
* This sets the user's affiliation to 'member' (if they weren't affiliated
|
||||||
|
* before) and reserves the nickname for this user, thereby preventing other
|
||||||
|
* users from using it in this MUC.
|
||||||
|
* See https://xmpp.org/extensions/xep-0045.html#register
|
||||||
|
* @private
|
||||||
|
* @method _converse.ChatRoom#registerNickname
|
||||||
|
*/
|
||||||
async registerNickname () {
|
async registerNickname () {
|
||||||
// See https://xmpp.org/extensions/xep-0045.html#register
|
|
||||||
const { __ } = _converse;
|
const { __ } = _converse;
|
||||||
const nick = this.get('nick');
|
const nick = this.get('nick');
|
||||||
const jid = this.get('jid');
|
const jid = this.get('jid');
|
||||||
@ -1593,26 +1601,19 @@ const ChatRoomMixin = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
async unregisterNickname () {
|
/**
|
||||||
const jid = this.get('jid');
|
* Send an IQ stanza to the MUC to unregister this user's nickname.
|
||||||
let iq;
|
* If the user had a 'member' affiliation, it'll be removed and their
|
||||||
try {
|
* nickname will no longer be reserved and can instead be used (and
|
||||||
iq = await api.sendIQ(
|
* registered) by other users.
|
||||||
$iq({
|
* @private
|
||||||
'to': jid,
|
* @method _converse.ChatRoom#unregisterNickname
|
||||||
'type': 'set'
|
*/
|
||||||
}).c('query', { 'xmlns': Strophe.NS.MUC_REGISTER })
|
unregisterNickname () {
|
||||||
);
|
const iq = $iq({ 'to': this.get('jid'), 'type': 'set' })
|
||||||
} catch (e) {
|
|
||||||
log.error(e);
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
if (sizzle(`query[xmlns="${Strophe.NS.MUC_REGISTER}"] registered`, iq).pop()) {
|
|
||||||
const iq = $iq({ 'to': jid, 'type': 'set' })
|
|
||||||
.c('query', { 'xmlns': Strophe.NS.MUC_REGISTER })
|
.c('query', { 'xmlns': Strophe.NS.MUC_REGISTER })
|
||||||
.c('remove');
|
.c('remove');
|
||||||
return api.sendIQ(iq).catch(e => log.error(e));
|
return api.sendIQ(iq).catch(e => log.error(e));
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -79,20 +79,6 @@ describe("Chatrooms", function () {
|
|||||||
|
|
||||||
_converse.connection.IQ_stanzas = [];
|
_converse.connection.IQ_stanzas = [];
|
||||||
room.close();
|
room.close();
|
||||||
stanza = await u.waitUntil(() => _converse.connection.IQ_stanzas.filter(
|
|
||||||
iq => sizzle(`iq[to="${muc_jid}"][type="set"] query[xmlns="jabber:iq:register"]`, iq).length
|
|
||||||
).pop());
|
|
||||||
_converse.connection.IQ_stanzas = [];
|
|
||||||
|
|
||||||
result = $iq({
|
|
||||||
'from': room.get('jid'),
|
|
||||||
'id': stanza.getAttribute('id'),
|
|
||||||
'to': _converse.bare_jid,
|
|
||||||
'type': 'result',
|
|
||||||
}).c('query', {'xmlns': 'jabber:iq:register'})
|
|
||||||
.c('registered').up()
|
|
||||||
.c('username').t('romeo');
|
|
||||||
_converse.connection._dataRecv(mock.createRequest(result));
|
|
||||||
|
|
||||||
stanza = await u.waitUntil(() => _converse.connection.IQ_stanzas.filter(
|
stanza = await u.waitUntil(() => _converse.connection.IQ_stanzas.filter(
|
||||||
iq => sizzle(`iq[to="${muc_jid}"][type="set"] query[xmlns="jabber:iq:register"]`, iq).length
|
iq => sizzle(`iq[to="${muc_jid}"][type="set"] query[xmlns="jabber:iq:register"]`, iq).length
|
||||||
|
Loading…
Reference in New Issue
Block a user