Add support for handling multiple stanza-id
elements
This commit is contained in:
parent
8d00294681
commit
7e34a462c1
23
dist/converse.js
vendored
23
dist/converse.js
vendored
@ -61982,7 +61982,6 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
|
|||||||
const archive = sizzle(`result[xmlns="${Strophe.NS.MAM}"]`, original_stanza).pop(),
|
const archive = sizzle(`result[xmlns="${Strophe.NS.MAM}"]`, original_stanza).pop(),
|
||||||
spoiler = sizzle(`spoiler[xmlns="${Strophe.NS.SPOILER}"]`, original_stanza).pop(),
|
spoiler = sizzle(`spoiler[xmlns="${Strophe.NS.SPOILER}"]`, original_stanza).pop(),
|
||||||
delay = sizzle(`delay[xmlns="${Strophe.NS.DELAY}"]`, original_stanza).pop(),
|
delay = sizzle(`delay[xmlns="${Strophe.NS.DELAY}"]`, original_stanza).pop(),
|
||||||
stanza_id = sizzle(`stanza-id[xmlns="${Strophe.NS.SID}"]`, stanza).pop(),
|
|
||||||
chat_state = stanza.getElementsByTagName(_converse.COMPOSING).length && _converse.COMPOSING || stanza.getElementsByTagName(_converse.PAUSED).length && _converse.PAUSED || stanza.getElementsByTagName(_converse.INACTIVE).length && _converse.INACTIVE || stanza.getElementsByTagName(_converse.ACTIVE).length && _converse.ACTIVE || stanza.getElementsByTagName(_converse.GONE).length && _converse.GONE;
|
chat_state = stanza.getElementsByTagName(_converse.COMPOSING).length && _converse.COMPOSING || stanza.getElementsByTagName(_converse.PAUSED).length && _converse.PAUSED || stanza.getElementsByTagName(_converse.INACTIVE).length && _converse.INACTIVE || stanza.getElementsByTagName(_converse.ACTIVE).length && _converse.ACTIVE || stanza.getElementsByTagName(_converse.GONE).length && _converse.GONE;
|
||||||
|
|
||||||
const attrs = {
|
const attrs = {
|
||||||
@ -61993,13 +61992,13 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
|
|||||||
'message': _converse.chatboxes.getMessageBody(stanza) || undefined,
|
'message': _converse.chatboxes.getMessageBody(stanza) || undefined,
|
||||||
'msgid': stanza.getAttribute('id'),
|
'msgid': stanza.getAttribute('id'),
|
||||||
'references': this.getReferencesFromStanza(stanza),
|
'references': this.getReferencesFromStanza(stanza),
|
||||||
'stanza_id': stanza_id ? stanza_id.getAttribute('id') : undefined,
|
|
||||||
'stanza_id_by_jid': stanza_id ? stanza_id.getAttribute('by') : undefined,
|
|
||||||
'subject': _.propertyOf(stanza.querySelector('subject'))('textContent'),
|
'subject': _.propertyOf(stanza.querySelector('subject'))('textContent'),
|
||||||
'thread': _.propertyOf(stanza.querySelector('thread'))('textContent'),
|
'thread': _.propertyOf(stanza.querySelector('thread'))('textContent'),
|
||||||
'time': delay ? delay.getAttribute('stamp') : moment().format(),
|
'time': delay ? delay.getAttribute('stamp') : moment().format(),
|
||||||
'type': stanza.getAttribute('type')
|
'type': stanza.getAttribute('type')
|
||||||
};
|
};
|
||||||
|
const stanza_ids = sizzle(`stanza-id[xmlns="${Strophe.NS.SID}"]`, stanza);
|
||||||
|
stanza_ids.forEach(s => attrs[`stanza_id ${s.getAttribute('by')}`] = s.getAttribute('id'));
|
||||||
|
|
||||||
if (attrs.type === 'groupchat') {
|
if (attrs.type === 'groupchat') {
|
||||||
attrs.from = stanza.getAttribute('from');
|
attrs.from = stanza.getAttribute('from');
|
||||||
@ -66952,10 +66951,9 @@ _converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].plugins.add('converse-muc
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const msg = this.messages.findWhere({
|
const query = {};
|
||||||
'stanza_id': stanza_id.getAttribute('id'),
|
query[`stanza_id ${by_jid}`] = stanza_id.getAttribute('id');
|
||||||
'stanza_id_by_jid': by_jid
|
const msg = this.messages.findWhere(query);
|
||||||
});
|
|
||||||
return !_.isNil(msg);
|
return !_.isNil(msg);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -67004,11 +67002,14 @@ _converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].plugins.add('converse-muc
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (msg) {
|
if (msg) {
|
||||||
|
const attrs = {};
|
||||||
const stanza_id = sizzle(`stanza-id[xmlns="${Strophe.NS.SID}"]`, stanza).pop();
|
const stanza_id = sizzle(`stanza-id[xmlns="${Strophe.NS.SID}"]`, stanza).pop();
|
||||||
const attrs = {
|
const by_jid = stanza_id ? stanza_id.getAttribute('by') : undefined;
|
||||||
'stanza_id': stanza_id ? stanza_id.getAttribute('id') : undefined,
|
|
||||||
'stanza_id_by_jid': stanza_id ? stanza_id.getAttribute('by') : undefined
|
if (by_jid) {
|
||||||
};
|
const key = `stanza_id ${by_jid}`;
|
||||||
|
attrs[key] = stanza_id.getAttribute('id');
|
||||||
|
}
|
||||||
|
|
||||||
if (!msg.get('received')) {
|
if (!msg.get('received')) {
|
||||||
attrs.received = moment().format();
|
attrs.received = moment().format();
|
||||||
|
@ -2510,7 +2510,7 @@
|
|||||||
_converse.connection._dataRecv(test_utils.createRequest(stanza));
|
_converse.connection._dataRecv(test_utils.createRequest(stanza));
|
||||||
await test_utils.waitUntil(() => view.model.reflectionHandled.calls.count() === 1);
|
await test_utils.waitUntil(() => view.model.reflectionHandled.calls.count() === 1);
|
||||||
expect(view.model.messages.length).toBe(1);
|
expect(view.model.messages.length).toBe(1);
|
||||||
expect(view.model.messages.at(0).get('stanza_id')).toBe("5f3dbc5e-e1d3-4077-a492-693f3769c7ad");
|
expect(view.model.messages.at(0).get('stanza_id room@muc.example.com')).toBe("5f3dbc5e-e1d3-4077-a492-693f3769c7ad");
|
||||||
expect(view.model.messages.at(0).get('origin_id')).toBe(attrs.origin_id);
|
expect(view.model.messages.at(0).get('origin_id')).toBe(attrs.origin_id);
|
||||||
done();
|
done();
|
||||||
}));
|
}));
|
||||||
|
@ -596,7 +596,6 @@ converse.plugins.add('converse-chatboxes', {
|
|||||||
const archive = sizzle(`result[xmlns="${Strophe.NS.MAM}"]`, original_stanza).pop(),
|
const archive = sizzle(`result[xmlns="${Strophe.NS.MAM}"]`, original_stanza).pop(),
|
||||||
spoiler = sizzle(`spoiler[xmlns="${Strophe.NS.SPOILER}"]`, original_stanza).pop(),
|
spoiler = sizzle(`spoiler[xmlns="${Strophe.NS.SPOILER}"]`, original_stanza).pop(),
|
||||||
delay = sizzle(`delay[xmlns="${Strophe.NS.DELAY}"]`, original_stanza).pop(),
|
delay = sizzle(`delay[xmlns="${Strophe.NS.DELAY}"]`, original_stanza).pop(),
|
||||||
stanza_id = sizzle(`stanza-id[xmlns="${Strophe.NS.SID}"]`, stanza).pop(),
|
|
||||||
chat_state = stanza.getElementsByTagName(_converse.COMPOSING).length && _converse.COMPOSING ||
|
chat_state = stanza.getElementsByTagName(_converse.COMPOSING).length && _converse.COMPOSING ||
|
||||||
stanza.getElementsByTagName(_converse.PAUSED).length && _converse.PAUSED ||
|
stanza.getElementsByTagName(_converse.PAUSED).length && _converse.PAUSED ||
|
||||||
stanza.getElementsByTagName(_converse.INACTIVE).length && _converse.INACTIVE ||
|
stanza.getElementsByTagName(_converse.INACTIVE).length && _converse.INACTIVE ||
|
||||||
@ -611,13 +610,14 @@ converse.plugins.add('converse-chatboxes', {
|
|||||||
'message': _converse.chatboxes.getMessageBody(stanza) || undefined,
|
'message': _converse.chatboxes.getMessageBody(stanza) || undefined,
|
||||||
'msgid': stanza.getAttribute('id'),
|
'msgid': stanza.getAttribute('id'),
|
||||||
'references': this.getReferencesFromStanza(stanza),
|
'references': this.getReferencesFromStanza(stanza),
|
||||||
'stanza_id': stanza_id ? stanza_id.getAttribute('id') : undefined,
|
|
||||||
'stanza_id_by_jid': stanza_id ? stanza_id.getAttribute('by') : undefined,
|
|
||||||
'subject': _.propertyOf(stanza.querySelector('subject'))('textContent'),
|
'subject': _.propertyOf(stanza.querySelector('subject'))('textContent'),
|
||||||
'thread': _.propertyOf(stanza.querySelector('thread'))('textContent'),
|
'thread': _.propertyOf(stanza.querySelector('thread'))('textContent'),
|
||||||
'time': delay ? delay.getAttribute('stamp') : moment().format(),
|
'time': delay ? delay.getAttribute('stamp') : moment().format(),
|
||||||
'type': stanza.getAttribute('type')
|
'type': stanza.getAttribute('type')
|
||||||
};
|
};
|
||||||
|
const stanza_ids = sizzle(`stanza-id[xmlns="${Strophe.NS.SID}"]`, stanza);
|
||||||
|
stanza_ids.forEach(s => (attrs[`stanza_id ${s.getAttribute('by')}`] = s.getAttribute('id')));
|
||||||
|
|
||||||
if (attrs.type === 'groupchat') {
|
if (attrs.type === 'groupchat') {
|
||||||
attrs.from = stanza.getAttribute('from');
|
attrs.from = stanza.getAttribute('from');
|
||||||
attrs.nick = Strophe.unescapeNode(Strophe.getResourceFromJid(attrs.from));
|
attrs.nick = Strophe.unescapeNode(Strophe.getResourceFromJid(attrs.from));
|
||||||
|
@ -958,10 +958,9 @@ converse.plugins.add('converse-muc', {
|
|||||||
if (!result.length) {
|
if (!result.length) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const msg = this.messages.findWhere({
|
const query = {};
|
||||||
'stanza_id': stanza_id.getAttribute('id'),
|
query[`stanza_id ${by_jid}`] = stanza_id.getAttribute('id');
|
||||||
'stanza_id_by_jid': by_jid
|
const msg = this.messages.findWhere(query);
|
||||||
});
|
|
||||||
return !_.isNil(msg);
|
return !_.isNil(msg);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1008,10 +1007,12 @@ converse.plugins.add('converse-muc', {
|
|||||||
'sender': 'me'
|
'sender': 'me'
|
||||||
});
|
});
|
||||||
if (msg) {
|
if (msg) {
|
||||||
|
const attrs = {};
|
||||||
const stanza_id = sizzle(`stanza-id[xmlns="${Strophe.NS.SID}"]`, stanza).pop();
|
const stanza_id = sizzle(`stanza-id[xmlns="${Strophe.NS.SID}"]`, stanza).pop();
|
||||||
const attrs = {
|
const by_jid = stanza_id ? stanza_id.getAttribute('by') : undefined;
|
||||||
'stanza_id': stanza_id ? stanza_id.getAttribute('id') : undefined,
|
if (by_jid) {
|
||||||
'stanza_id_by_jid': stanza_id ? stanza_id.getAttribute('by') : undefined
|
const key = `stanza_id ${by_jid}`;
|
||||||
|
attrs[key] = stanza_id.getAttribute('id');
|
||||||
}
|
}
|
||||||
if (!msg.get('received')) {
|
if (!msg.get('received')) {
|
||||||
attrs.received = moment().format();
|
attrs.received = moment().format();
|
||||||
|
Loading…
Reference in New Issue
Block a user