Don't show duplicate topic change notifications
This commit is contained in:
parent
c4ba6735ba
commit
bc4d016557
28
spec/muc.js
28
spec/muc.js
@ -608,19 +608,39 @@
|
||||
</message>`)));
|
||||
await u.waitUntil(() => view.model.handleSubjectChange.calls.count() === 2);
|
||||
|
||||
const el = sizzle('.chat-info__message', view.el).pop();
|
||||
let el = sizzle('.chat-info__message', view.el).pop();
|
||||
expect(el.textContent.trim()).toBe('Topic set by ralphm');
|
||||
await u.waitUntil(() => desc.textContent.trim() === 'This is a new topic');
|
||||
|
||||
// Doesn't show multiple subsequent topic change notifications
|
||||
_converse.connection._dataRecv(test_utils.createRequest(u.toStanza(`
|
||||
<message xmlns="jabber:client" to="${_converse.jid}" type="groupchat" from="jdev@conference.jabber.org/ralphm">
|
||||
<subject>Yet another topic</subject>
|
||||
</message>`)));
|
||||
await u.waitUntil(() => view.model.handleSubjectChange.calls.count() === 3);
|
||||
await u.waitUntil(() => desc.textContent.trim() === 'Yet another topic');
|
||||
expect(sizzle('.chat-info__message', view.el).length).toBe(1);
|
||||
|
||||
// Sow multiple subsequent topic change notification from someone else
|
||||
_converse.connection._dataRecv(test_utils.createRequest(u.toStanza(`
|
||||
<message xmlns="jabber:client" to="${_converse.jid}" type="groupchat" from="jdev@conference.jabber.org/some1">
|
||||
<subject>Some1's topic</subject>
|
||||
</message>`)));
|
||||
await u.waitUntil(() => view.model.handleSubjectChange.calls.count() === 4);
|
||||
await u.waitUntil(() => desc.textContent.trim() === "Some1's topic");
|
||||
expect(sizzle('.chat-info__message', view.el).length).toBe(2);
|
||||
el = sizzle('.chat-info__message', view.el).pop();
|
||||
expect(el.textContent.trim()).toBe('Topic set by some1');
|
||||
|
||||
// Removes current topic
|
||||
const stanza = u.toStanza(
|
||||
`<message xmlns="jabber:client" to="${_converse.jid}" type="groupchat" from="jdev@conference.jabber.org/ralphm">
|
||||
`<message xmlns="jabber:client" to="${_converse.jid}" type="groupchat" from="jdev@conference.jabber.org/some1">
|
||||
<subject/>
|
||||
</message>`);
|
||||
_converse.connection._dataRecv(test_utils.createRequest(stanza));
|
||||
await u.waitUntil(() => view.model.handleSubjectChange.calls.count() === 3);
|
||||
await u.waitUntil(() => view.model.handleSubjectChange.calls.count() === 5);
|
||||
await u.waitUntil(() => view.el.querySelector('.chat-head__desc') === null);
|
||||
expect(view.el.querySelector('.chat-info:last-child').textContent.trim()).toBe("Topic cleared by ralphm");
|
||||
expect(view.el.querySelector('.chat-info:last-child').textContent.trim()).toBe("Topic cleared by some1");
|
||||
done();
|
||||
}));
|
||||
});
|
||||
|
@ -1703,12 +1703,17 @@ converse.plugins.add('converse-muc', {
|
||||
});
|
||||
if (!attrs.is_delayed) {
|
||||
const message = subject ? __('Topic set by %1$s', author) : __('Topic cleared by %1$s', author);
|
||||
const data = {
|
||||
message,
|
||||
'nick': attrs.nick,
|
||||
'type': 'info'
|
||||
};
|
||||
this.createMessage(data);
|
||||
const prev_msg = this.messages.last();
|
||||
if (prev_msg?.get('nick') !== attrs.nick ||
|
||||
prev_msg?.get('type') !== 'info' ||
|
||||
prev_msg?.get('message') !== message) {
|
||||
|
||||
this.createMessage({
|
||||
message,
|
||||
'nick': attrs.nick,
|
||||
'type': 'info'
|
||||
});
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user