The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/app/lib/server/functions/parseUrlsInMessage.ts

25 lines
720 B

import type { IMessage } from '@rocket.chat/core-typings';
import { Markdown } from '../../../markdown/server';
import { getMessageUrlRegex } from '../../../../lib/getMessageUrlRegex';
export const parseUrlsInMessage = (message: IMessage & { parseUrls?: boolean }): IMessage => {
if (message.parseUrls === false) {
return message;
}
message.html = message.msg;
message = Markdown.code(message);
const urls = message.html?.match(getMessageUrlRegex()) || [];
if (urls) {
message.urls = [...new Set(urls)].map((url) => ({ url, meta: {} }));
}
message = Markdown.mountTokensBack(message, false);
message.msg = message.html || message.msg;
delete message.html;
delete message.tokens;
return message;
};