From f99763a874c119e748d0fe0b108eb504f2ff94ab Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Wed, 22 Jul 2020 10:48:49 -0300 Subject: [PATCH 1/2] Fix Thread disappearing --- app/search/client/provider/result.js | 12 ++++- app/threads/client/flextab/thread.js | 2 +- app/ui-message/client/message.js | 47 +------------------ app/ui-message/client/messageThread.js | 5 +- app/ui-utils/client/lib/RoomHistoryManager.js | 4 +- 5 files changed, 17 insertions(+), 53 deletions(-) diff --git a/app/search/client/provider/result.js b/app/search/client/provider/result.js index 18bb48c0bf2a4..2e7455bbf4a89 100644 --- a/app/search/client/provider/result.js +++ b/app/search/client/provider/result.js @@ -116,5 +116,15 @@ Template.DefaultSearchResultTemplate.helpers({ msg.searchedText = text; return { customClass: 'search', actionContext: 'search', ...msg, groupable: false }; }, - messageContext, + messageContext() { + const result = messageContext.call(this, { rid: Session.get('openedRoom') }); + return { + ...result, + settings: { + ...result.settings, + showReplyButton: false, + showreply: false, + }, + }; + }, }); diff --git a/app/threads/client/flextab/thread.js b/app/threads/client/flextab/thread.js index b68b335d2b872..eedb1038a79cd 100644 --- a/app/threads/client/flextab/thread.js +++ b/app/threads/client/flextab/thread.js @@ -84,7 +84,7 @@ Template.thread.helpers({ const instance = Template.instance(); const { mainMessage: { rid, _id: tmid }, subscription } = Template.currentData(); - const thread = Messages.findOne({ _id: tmid }, { fields: { replies: 1 } }); + const thread = instance.Threads.findOne({ _id: tmid }, { fields: { replies: 1 } }); const following = thread?.replies?.includes(Meteor.userId()); diff --git a/app/ui-message/client/message.js b/app/ui-message/client/message.js index 48f595751f28c..48e9c6213922f 100644 --- a/app/ui-message/client/message.js +++ b/app/ui-message/client/message.js @@ -1,6 +1,5 @@ import _ from 'underscore'; import s from 'underscore.string'; -import { Meteor } from 'meteor/meteor'; import { Tracker } from 'meteor/tracker'; import { Template } from 'meteor/templating'; import { Session } from 'meteor/session'; @@ -9,12 +8,11 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { timeAgo, formatDateAndTime } from '../../lib/client/lib/formatDate'; import { DateFormat } from '../../lib/client'; import { normalizeThreadTitle } from '../../threads/client/lib/normalizeThreadTitle'; -import { renderMessageBody, MessageTypes, MessageAction, call } from '../../ui-utils/client'; -import { RoomRoles, UserRoles, Roles, Messages } from '../../models/client'; +import { renderMessageBody, MessageTypes, MessageAction } from '../../ui-utils/client'; +import { RoomRoles, UserRoles, Roles } from '../../models/client'; import { callbacks } from '../../callbacks/client'; import { Markdown } from '../../markdown/client'; import { t, roomTypes } from '../../utils'; -import { upsertMessage } from '../../ui-utils/client/lib/RoomHistoryManager'; import './message.html'; import './messageThread'; import { AutoTranslate } from '../../autotranslate/client'; @@ -51,39 +49,6 @@ const renderBody = (msg, settings) => { return msg; }; -const findParentMessage = (() => { - const waiting = []; - const uid = Tracker.nonreactive(() => Meteor.userId()); - const getMessages = _.debounce(async function() { - const _tmp = [...waiting]; - waiting.length = 0; - (await call('getMessages', _tmp)).map((msg) => Messages.findOne({ _id: msg._id }) || upsertMessage({ msg: { ...msg, _hidden: true }, uid })); - }, 500); - - - return (tmid) => { - if (waiting.indexOf(tmid) > -1) { - return; - } - const message = Messages.findOne({ _id: tmid }); - if (!message) { - waiting.push(tmid); - return getMessages(); - } - return Messages.update( - { tmid, repliesCount: { $exists: 0 } }, - { - $set: { - following: message.replies && message.replies.indexOf(uid) > -1, - threadMsg: normalizeThreadTitle(message), - repliesCount: message.tcount, - }, - }, - { multi: true }, - ); - }; -})(); - Template.message.helpers({ following() { const { msg, u } = this; @@ -462,14 +427,6 @@ Template.message.helpers({ }, }); - -Template.message.onCreated(function() { - const { msg, shouldCollapseReplies } = Template.currentData(); - if (shouldCollapseReplies && msg.tmid && !msg.threadMsg) { - findParentMessage(msg.tmid); - } -}); - const hasTempClass = (node) => node.classList.contains('temp'); const getPreviousSentMessage = (currentNode) => { diff --git a/app/ui-message/client/messageThread.js b/app/ui-message/client/messageThread.js index cdfed91f4912c..d18ac495600a5 100644 --- a/app/ui-message/client/messageThread.js +++ b/app/ui-message/client/messageThread.js @@ -52,10 +52,7 @@ Template.messageThread.helpers({ Template.messageThread.onCreated(function() { this.parentMessage = new ReactiveVar(); this.autorun(async () => { - const { parentMessage, tmid } = Template.currentData(); - if (parentMessage) { - return this.parentMessage.set(parentMessage); - } + const { tmid } = Template.currentData(); this.parentMessage.set(await findParentMessage(tmid)); }); }); diff --git a/app/ui-utils/client/lib/RoomHistoryManager.js b/app/ui-utils/client/lib/RoomHistoryManager.js index 41d786309341e..d0d19a12ab66c 100644 --- a/app/ui-utils/client/lib/RoomHistoryManager.js +++ b/app/ui-utils/client/lib/RoomHistoryManager.js @@ -81,7 +81,7 @@ export function upsertMessageBulk({ msgs, subscription }, collection = ChatMessa const defaultLimit = parseInt(getConfig('roomListLimit')) || 50; -const waitAfterFlush = (fn) => setTimeout(() => Tracker.afterFlush(fn), 70); +const waitAfterFlush = (fn) => setTimeout(() => Tracker.afterFlush(fn), 10); export const RoomHistoryManager = new class { constructor() { @@ -167,7 +167,7 @@ export const RoomHistoryManager = new class { if (wrapper) { waitAfterFlush(() => { - if (wrapper.scrollHeight <= wrapper.offsetHeight) { + if (wrapper.children[0].scrollHeight <= wrapper.offsetHeight) { return this.getMore(rid); } const heightDiff = wrapper.scrollHeight - previousHeight; From 2317b9fcd655e564542ee247119267105a47943a Mon Sep 17 00:00:00 2001 From: Gabriel Henriques Date: Wed, 22 Jul 2020 18:55:40 -0300 Subject: [PATCH 2/2] fix pinned messages --- app/message-pin/client/views/pinnedMessages.html | 2 +- app/ui-message/client/message.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/message-pin/client/views/pinnedMessages.html b/app/message-pin/client/views/pinnedMessages.html index d7310baadb7a9..69aa06225a8bb 100644 --- a/app/message-pin/client/views/pinnedMessages.html +++ b/app/message-pin/client/views/pinnedMessages.html @@ -9,7 +9,7 @@

{{_ "No_pinned_messages"}}

    {{# with messageContext}} - {{#each msg in messages}}{{> message msg=msg room=room groupable=true subscription=subscription settings=settings u=u }}{{/each}} + {{#each msg in messages}}{{> message context="pinned" msg=msg room=room groupable=true subscription=subscription settings=settings u=u }}{{/each}} {{/with}}
diff --git a/app/ui-message/client/message.js b/app/ui-message/client/message.js index 48e9c6213922f..3d1ee665bb1bf 100644 --- a/app/ui-message/client/message.js +++ b/app/ui-message/client/message.js @@ -403,8 +403,8 @@ Template.message.helpers({ return !(groupable === true || _groupable === true) && !!(tmid && showreply && (!t || t === 'e2e')); }, shouldHideBody() { - const { msg: { tmid }, settings: { showreply } } = this; - return showreply && tmid; + const { msg: { tmid, actionContext }, settings: { showreply }, context } = this; + return showreply && tmid && !(actionContext || context); }, collapsed() { const { msg: { tmid, collapsed }, settings: { showreply }, shouldCollapseReplies } = this;