From cb34777455fa232e4b6dc6a622b814aa6d7fcd0d Mon Sep 17 00:00:00 2001 From: Gabriel Delavald Date: Tue, 17 Apr 2018 14:37:47 -0300 Subject: [PATCH] [FIX] Fix wrong grouping on messages when server is slow (#10472) [FIX] Messages was grouping wrong some times when server is slow --- packages/rocketchat-ui-message/client/message.js | 16 ++++++++++++++-- packages/rocketchat-ui/client/lib/RoomManager.js | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/rocketchat-ui-message/client/message.js b/packages/rocketchat-ui-message/client/message.js index 3b42c51c388..220ff95b5c9 100644 --- a/packages/rocketchat-ui-message/client/message.js +++ b/packages/rocketchat-ui-message/client/message.js @@ -339,7 +339,19 @@ Template.message.onViewRendered = function(context) { return this._domrange.onAttached(function(domRange) { const currentNode = domRange.lastNode(); const currentDataset = currentNode.dataset; - const previousNode = currentNode.previousElementSibling; + const getPreviousSentMessage = (currentNode) => { + if ($(currentNode).hasClass('temp')) { + return currentNode.previousElementSibling; + } + if (currentNode.previousElementSibling != null) { + let previousValid = currentNode.previousElementSibling; + while (previousValid != null && $(previousValid).hasClass('temp')) { + previousValid = previousValid.previousElementSibling; + } + return previousValid; + } + }; + const previousNode = getPreviousSentMessage(currentNode); const nextNode = currentNode.nextElementSibling; const $currentNode = $(currentNode); const $nextNode = $(nextNode); @@ -372,7 +384,7 @@ Template.message.onViewRendered = function(context) { if (nextDataset.groupable !== 'false') { if (nextDataset.username !== currentDataset.username || parseInt(nextDataset.timestamp) - parseInt(currentDataset.timestamp) > RocketChat.settings.get('Message_GroupingPeriod') * 1000) { $nextNode.removeClass('sequential'); - } else if (!$nextNode.hasClass('new-day')) { + } else if (!$nextNode.hasClass('new-day') && !$currentNode.hasClass('temp')) { $nextNode.addClass('sequential'); } } diff --git a/packages/rocketchat-ui/client/lib/RoomManager.js b/packages/rocketchat-ui/client/lib/RoomManager.js index c5052119861..89348ba0a02 100644 --- a/packages/rocketchat-ui/client/lib/RoomManager.js +++ b/packages/rocketchat-ui/client/lib/RoomManager.js @@ -223,7 +223,7 @@ const RoomManager = new function() { }; const loadMissedMessages = function(rid) { - const lastMessage = ChatMessage.findOne({rid}, {sort: {ts: -1}, limit: 1}); + const lastMessage = ChatMessage.findOne({rid, temp: { $exists: false } }, {sort: {ts: -1}, limit: 1}); if (lastMessage == null) { return; }