Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/definitions/IMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ export interface IMessage {
t?: SubscriptionType;
ts: Date;
u: IUserMessage;
rid: string;
alias: string;
parseUrls: boolean;
groupable?: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,38 @@ import orderBy from 'lodash/orderBy';
import log from '../../utils/log';
import { getMessageById } from '../database/services/Message';
import { MESSAGE_TYPE_LOAD_NEXT_CHUNK, MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK } from '../../constants/messageTypeLoad';
import { IRocketChat, IMessage } from '../../definitions';
import { generateLoadMoreId } from '../utils';
import updateMessages from './updateMessages';

const COUNT = 50;

export default function loadSurroundingMessages({ messageId, rid }) {
interface ILoadMoreMessage {
_id: string;
rid: string;
tmid?: string;
ts: moment.Moment;
t: string;
msg?: string;
}

export default function loadSurroundingMessages(this: IRocketChat, { messageId, rid }: { messageId: string; rid: string }) {
return new Promise(async (resolve, reject) => {
try {
const data = await this.methodCallWrapper('loadSurroundingMessages', { _id: messageId, rid }, COUNT);
Comment thread
reinaldonetof marked this conversation as resolved.
Outdated
let messages = EJSON.fromJSONValue(data?.messages);
let messages: (IMessage | ILoadMoreMessage)[] = EJSON.fromJSONValue(data?.messages);
messages = orderBy(messages, 'ts');

const message = messages.find(m => m._id === messageId);
const { tmid } = message;
const tmid = message?.tmid;

if (messages?.length) {
if (data?.moreBefore) {
const firstMessage = messages[0];
const firstMessageRecord = await getMessageById(firstMessage._id);
if (!firstMessageRecord) {
const loadMoreItem = {
_id: generateLoadMoreId(firstMessage._id),
_id: generateLoadMoreId(firstMessage._id || ''),
Comment thread
dnlsilva marked this conversation as resolved.
Outdated
rid: firstMessage.rid,
tmid,
ts: moment(firstMessage.ts).subtract(1, 'millisecond'),
Expand All @@ -42,7 +52,7 @@ export default function loadSurroundingMessages({ messageId, rid }) {
const lastMessageRecord = await getMessageById(lastMessage._id);
if (!lastMessageRecord) {
const loadMoreItem = {
_id: generateLoadMoreId(lastMessage._id),
_id: generateLoadMoreId(lastMessage._id || ''),
rid: lastMessage.rid,
tmid,
ts: moment(lastMessage.ts).add(1, 'millisecond'),
Expand All @@ -52,11 +62,12 @@ export default function loadSurroundingMessages({ messageId, rid }) {
messages.push(loadMoreItem);
}
}
// TODO: Refactor when migrate methods/updateMessages
// @ts-ignore
await updateMessages({ rid, update: messages });
return resolve(messages);
} else {
return resolve([]);
}
return resolve([]);
} catch (e) {
log(e);
reject(e);
Expand Down