Use native methods instead of DayJS

Results in a 4x speedup
This commit is contained in:
JC Brand 2019-06-26 17:52:45 +02:00
parent 9ee0b68133
commit 11da69b0d7
2 changed files with 12 additions and 10 deletions

View File

@ -1312,24 +1312,26 @@ converse.plugins.add('converse-muc-views', {
},
/**
* Working backwards, get the first join/leave notification
* from the same user, on the same day and BEFORE any chat
* messages were received.
* Working backwards, get today's most recent join/leave notification
* from the same user (if any exists) after the most recent chat message.
* @private
* @method _converse.ChatRoomView#getPreviousJoinOrLeaveNotification
* @param {HTMLElement} el
* @param {string} nick
*/
getPreviousJoinOrLeaveNotification (el, nick) {
while (!_.isNil(el)) {
const data = _.get(el, 'dataset', {});
if (!_.includes(_.get(el, 'classList', []), 'chat-info')) {
const today = (new Date()).toISOString().split('T')[0];
while (el !== null) {
if (!el.classList.contains('chat-info')) {
return;
}
if (!dayjs(el.getAttribute('data-isodate')).isSame(new Date(), "day")) {
el = el.previousElementSibling;
continue;
// Check whether el is still from today.
// We don't use `Dayjs.same` here, since it's about 4 times slower.
const date = el.getAttribute('data-isodate');
if (date && date.split('T')[0] !== today) {
return;
}
const data = _.get(el, 'dataset', {});
if (data.join === nick ||
data.leave === nick ||
data.leavejoin === nick ||

View File

@ -258,7 +258,7 @@ u.getLastChildElement = function (el, selector='*') {
}
u.hasClass = function (className, el) {
return Array.from(el.classList).includes(className);
return el.classList.contains(className);
};
u.addClass = function (className, el) {