diff --git a/apps/meteor/app/oembed/server/jumpToMessage.ts b/apps/meteor/app/oembed/server/jumpToMessage.ts index d36f5c21348..b48ea8907e1 100644 --- a/apps/meteor/app/oembed/server/jumpToMessage.ts +++ b/apps/meteor/app/oembed/server/jumpToMessage.ts @@ -11,10 +11,10 @@ import { settings } from '../../settings/server'; import { callbacks } from '../../../lib/callbacks'; import { canAccessRoomAsync } from '../../authorization/server/functions/canAccessRoom'; -const recursiveRemove = (attachments: MessageAttachment, deep = 1): MessageAttachment => { +const recursiveRemoveAttachments = (attachments: MessageAttachment, deep = 1, quoteChainLimit: number): MessageAttachment => { if (attachments && isQuoteAttachment(attachments)) { - if (deep < settings.get('Message_QuoteChainLimit')) { - attachments.attachments?.map((msg) => recursiveRemove(msg, deep + 1)); + if (deep < quoteChainLimit - 1) { + attachments.attachments?.map((msg) => recursiveRemoveAttachments(msg, deep + 1, quoteChainLimit)); } else { delete attachments.attachments; } @@ -28,7 +28,12 @@ const validateAttachmentDeepness = (message: IMessage): IMessage => { return message; } - message.attachments = message.attachments?.map((attachment) => recursiveRemove(attachment)); + const quoteChainLimit = settings.get('Message_QuoteChainLimit'); + if ((message.attachments && quoteChainLimit < 2) || isNaN(quoteChainLimit)) { + delete message.attachments; + } + + message.attachments = message.attachments?.map((attachment) => recursiveRemoveAttachments(attachment, 1, quoteChainLimit)); return message; };