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>`)));
|
</message>`)));
|
||||||
await u.waitUntil(() => view.model.handleSubjectChange.calls.count() === 2);
|
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');
|
expect(el.textContent.trim()).toBe('Topic set by ralphm');
|
||||||
await u.waitUntil(() => desc.textContent.trim() === 'This is a new topic');
|
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
|
// Removes current topic
|
||||||
const stanza = u.toStanza(
|
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/>
|
<subject/>
|
||||||
</message>`);
|
</message>`);
|
||||||
_converse.connection._dataRecv(test_utils.createRequest(stanza));
|
_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);
|
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();
|
done();
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
@ -1703,12 +1703,17 @@ converse.plugins.add('converse-muc', {
|
|||||||
});
|
});
|
||||||
if (!attrs.is_delayed) {
|
if (!attrs.is_delayed) {
|
||||||
const message = subject ? __('Topic set by %1$s', author) : __('Topic cleared by %1$s', author);
|
const message = subject ? __('Topic set by %1$s', author) : __('Topic cleared by %1$s', author);
|
||||||
const data = {
|
const prev_msg = this.messages.last();
|
||||||
message,
|
if (prev_msg?.get('nick') !== attrs.nick ||
|
||||||
'nick': attrs.nick,
|
prev_msg?.get('type') !== 'info' ||
|
||||||
'type': 'info'
|
prev_msg?.get('message') !== message) {
|
||||||
};
|
|
||||||
this.createMessage(data);
|
this.createMessage({
|
||||||
|
message,
|
||||||
|
'nick': attrs.nick,
|
||||||
|
'type': 'info'
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user