Don't mark /me messages are followup messages.

This commit is contained in:
JC Brand 2018-05-02 14:55:10 +02:00
parent 911ede2886
commit 7eb6b13f10
5 changed files with 50 additions and 23 deletions

View File

@ -8433,8 +8433,12 @@ body.reset {
#conversejs .message.chat-msg .chat-msg-heading .chat-msg-time {
padding-left: 0.25em;
color: #9d9d9d; }
#conversejs .message.chat-msg.chat-action .chat-msg-heading {
margin-top: 0; }
#conversejs .message.chat-msg.chat-action {
display: block; }
#conversejs .message.chat-msg.chat-action .chat-msg-heading {
float: left;
margin-top: 0;
padding-bottom: 0; }
#conversejs .message.chat-msg.chat-msg-followup .chat-msg-heading,
#conversejs .message.chat-msg.chat-msg-followup .avatar {
display: none; }

View File

@ -8621,8 +8621,12 @@ body {
#conversejs .message.chat-msg .chat-msg-heading .chat-msg-time {
padding-left: 0.25em;
color: #9d9d9d; }
#conversejs .message.chat-msg.chat-action .chat-msg-heading {
margin-top: 0; }
#conversejs .message.chat-msg.chat-action {
display: block; }
#conversejs .message.chat-msg.chat-action .chat-msg-heading {
float: left;
margin-top: 0;
padding-bottom: 0; }
#conversejs .message.chat-msg.chat-msg-followup .chat-msg-heading,
#conversejs .message.chat-msg.chat-msg-followup .avatar {
display: none; }

View File

@ -144,8 +144,12 @@
}
}
&.chat-action {
display: block;
.chat-msg-heading {
float: left;
margin-top: 0;
padding-bottom: 0;
}
}
&.chat-msg-followup {

View File

@ -58,11 +58,8 @@
var view;
test_utils.createContacts(_converse, 'current');
test_utils.waitUntilDiscoConfirmed(_converse, 'localhost', [], ['vcard-temp'])
.then(() => test_utils.waitUntil(() => _converse.xmppstatus.get('fullname')), 300)
.then(function () {
return test_utils.waitUntil(function () {
return _converse.xmppstatus.get('fullname');
}, 300);
}).then(function () {
test_utils.openControlBox();
expect(_converse.chatboxes.length).toEqual(1);
var sender_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
@ -81,14 +78,35 @@
test_utils.waitUntil(function () {
return u.isVisible(view.el);
}).then(function () {
expect(view.el.querySelectorAll('.chat-action').length).toBe(1);
expect(_.includes(view.el.querySelector('.chat-msg-author').textContent, '**Max Frankfurter')).toBeTruthy();
expect($(view.el).find('.chat-msg-text').text()).toBe(' is tired');
message = '/me is as well';
test_utils.sendMessage(view, message);
expect(view.el.querySelectorAll('.chat-action').length).toBe(2);
expect(_.includes($(view.el).find('.chat-msg-author:last').text(), '**Max Mustermann')).toBeTruthy();
expect($(view.el).find('.chat-msg-text:last').text()).toBe(' is as well');
expect($(view.el).find('.chat-msg:last').hasClass('chat-msg-followup')).toBe(false);
// Check that /me messages after a normal message don't
// get the 'chat-msg-followup' class.
message = 'This a normal message';
test_utils.sendMessage(view, message);
let message_el = view.el.querySelector('.message:last-child');
expect(u.hasClass('chat-msg-followup', message_el)).toBeFalsy();
message = '/me wrote a 3rd person message';
test_utils.sendMessage(view, message);
message_el = view.el.querySelector('.message:last-child');
expect(view.el.querySelectorAll('.chat-action').length).toBe(3);
expect($(view.el).find('.chat-msg-text:last').text()).toBe(' wrote a 3rd person message');
expect($(view.el).find('.chat-msg-author:last').is(':visible')).toBeTruthy();
expect(u.hasClass('chat-msg-followup', message_el)).toBeFalsy();
message = 'This a normal message';
done();
});
});

View File

@ -683,25 +683,22 @@
*/
const from = el.getAttribute('data-from'),
previous_el = el.previousElementSibling,
date = moment(el.getAttribute('data-isodate'));
if (previous_el.getAttribute('data-from') === from &&
date.isBefore(moment(previous_el.getAttribute('data-isodate')).add(10, 'minutes'))) {
date = moment(el.getAttribute('data-isodate')),
next_el = el.nextElementSibling;
if (!u.hasClass('chat-action', el) && !u.hasClass('chat-action', previous_el) &&
previous_el.getAttribute('data-from') === from &&
date.isBefore(moment(previous_el.getAttribute('data-isodate')).add(10, 'minutes'))) {
u.addClass('chat-msg-followup', el);
}
const next_el = el.nextElementSibling;
if (!next_el) {
return;
}
if (next_el.getAttribute('data-from') !== from) {
u.removeClass('chat-msg-followup', next_el);
if (!next_el) { return; }
if (!u.hasClass('chat-action', 'el') &&
next_el.getAttribute('data-from') === from &&
moment(next_el.getAttribute('data-isodate')).isBefore(date.add(10, 'minutes'))) {
u.addClass('chat-msg-followup', next_el);
} else {
if (moment(next_el.getAttribute('data-isodate')).isBefore(date.add(10, 'minutes'))) {
u.addClass('chat-msg-followup', next_el);
} else {
u.removeClass('chat-msg-followup', next_el);
}
u.removeClass('chat-msg-followup', next_el);
}
},