diff --git a/apps/meteor/app/api/server/lib/messages.ts b/apps/meteor/app/api/server/lib/messages.ts index 71f9f540c6bf27241de8d70ca3cd325a1114dbde..a4f28f9680f7e35d6fa27487ad86aebe2219bc07 100644 --- a/apps/meteor/app/api/server/lib/messages.ts +++ b/apps/meteor/app/api/server/lib/messages.ts @@ -3,7 +3,6 @@ import type { IMessage, IUser } from '@rocket.chat/core-typings'; import { Rooms, Messages, Users } from '@rocket.chat/models'; import { canAccessRoomAsync } from '../../../authorization/server/functions/canAccessRoom'; -import { getValue } from '../../../settings/server/raw'; export async function findMentionedMessages({ uid, @@ -83,73 +82,6 @@ export async function findStarredMessages({ }; } -export async function findSnippetedMessageById({ uid, messageId }: { uid: string; messageId: string }): Promise<IMessage> { - if (!(await getValue('Message_AllowSnippeting'))) { - throw new Error('error-not-allowed'); - } - - if (!uid) { - throw new Error('invalid-user'); - } - - const snippet = await Messages.findOne({ _id: messageId, snippeted: true }); - - if (!snippet) { - throw new Error('invalid-message'); - } - - const room = await Rooms.findOneById(snippet.rid); - - if (!room) { - throw new Error('invalid-message'); - } - - if (!(await canAccessRoomAsync(room, { _id: uid }))) { - throw new Error('error-not-allowed'); - } - - return snippet; -} - -export async function findSnippetedMessages({ - uid, - roomId, - pagination: { offset, count, sort }, -}: { - uid: string; - roomId: string; - pagination: { offset: number; count: number; sort: FindOptions<IMessage>['sort'] }; -}): Promise<{ - messages: IMessage[]; - count: number; - offset: number; - total: number; -}> { - if (!(await getValue('Message_AllowSnippeting'))) { - throw new Error('error-not-allowed'); - } - const room = await Rooms.findOneById(roomId); - - if (!room || !(await canAccessRoomAsync(room, { _id: uid }))) { - throw new Error('error-not-allowed'); - } - - const { cursor, totalCount } = Messages.findSnippetedByRoom(roomId, { - sort: sort || { ts: -1 }, - skip: offset, - limit: count, - }); - - const [messages, total] = await Promise.all([cursor.toArray(), totalCount]); - - return { - messages, - count: messages.length, - offset, - total, - }; -} - export async function findDiscussionsFromRoom({ uid, roomId, diff --git a/apps/meteor/app/api/server/v1/chat.js b/apps/meteor/app/api/server/v1/chat.js index 73f4b6931ddc42695a49717fc4a75d648afc8941..ab623563eee79ff0254952d2022a2574150fcc7d 100644 --- a/apps/meteor/app/api/server/v1/chat.js +++ b/apps/meteor/app/api/server/v1/chat.js @@ -14,13 +14,7 @@ import Rooms from '../../../models/server/models/Rooms'; import Users from '../../../models/server/models/Users'; import Subscriptions from '../../../models/server/models/Subscriptions'; import { settings } from '../../../settings/server'; -import { - findMentionedMessages, - findStarredMessages, - findSnippetedMessageById, - findSnippetedMessages, - findDiscussionsFromRoom, -} from '../lib/messages'; +import { findMentionedMessages, findStarredMessages, findDiscussionsFromRoom } from '../lib/messages'; API.v1.addRoute( 'chat.delete', @@ -786,55 +780,6 @@ API.v1.addRoute( }, ); -API.v1.addRoute( - 'chat.getSnippetedMessageById', - { authRequired: true }, - { - get() { - const { messageId } = this.queryParams; - - if (!messageId) { - throw new Meteor.Error('error-invalid-params', 'The required "messageId" query param is missing.'); - } - const message = Promise.await( - findSnippetedMessageById({ - uid: this.userId, - messageId, - }), - ); - return API.v1.success(message); - }, - }, -); - -API.v1.addRoute( - 'chat.getSnippetedMessages', - { authRequired: true }, - { - get() { - const { roomId } = this.queryParams; - const { sort } = this.parseJsonQuery(); - const { offset, count } = this.getPaginationItems(); - - if (!roomId) { - throw new Meteor.Error('error-invalid-params', 'The required "roomId" query param is missing.'); - } - const messages = Promise.await( - findSnippetedMessages({ - uid: this.userId, - roomId, - pagination: { - offset, - count, - sort, - }, - }), - ); - return API.v1.success(messages); - }, - }, -); - API.v1.addRoute( 'chat.getDiscussions', { authRequired: true }, diff --git a/apps/meteor/app/authorization/server/functions/upsertPermissions.ts b/apps/meteor/app/authorization/server/functions/upsertPermissions.ts index 16519b9effe512c32b702ca113a0cbe584d81148..33ca8d1ec8e02319094dbf54de4ff4ab9a595a61 100644 --- a/apps/meteor/app/authorization/server/functions/upsertPermissions.ts +++ b/apps/meteor/app/authorization/server/functions/upsertPermissions.ts @@ -209,7 +209,6 @@ export const upsertPermissions = async (): Promise<void> => { { _id: 'manage-sounds', roles: ['admin'] }, { _id: 'access-mailer', roles: ['admin'] }, { _id: 'pin-message', roles: ['owner', 'moderator', 'admin'] }, - { _id: 'snippet-message', roles: ['owner', 'moderator', 'admin'] }, { _id: 'mobile-upload-file', roles: ['user', 'admin'] }, { _id: 'send-mail', roles: ['admin'] }, { _id: 'view-federation-data', roles: ['admin'] }, diff --git a/apps/meteor/app/autolinker/client/client.js b/apps/meteor/app/autolinker/client/client.js deleted file mode 100644 index a3e6d77d3e218e54b0146c5128988d2c8a339a9b..0000000000000000000000000000000000000000 --- a/apps/meteor/app/autolinker/client/client.js +++ /dev/null @@ -1,58 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Random } from 'meteor/random'; -import Autolinker from 'autolinker'; -import { escapeRegExp } from '@rocket.chat/string-helpers'; - -export const createAutolinkerMessageRenderer = - ({ phone, ...config }) => - (message) => { - if (!message.html?.trim()) { - return message; - } - - let msgParts; - let regexTokens; - if (message.tokens && message.tokens.length) { - regexTokens = new RegExp(`(${(message.tokens || []).map(({ token }) => escapeRegExp(token))})`, 'g'); - msgParts = message.html.split(regexTokens); - } else { - msgParts = [message.html]; - } - - message.html = msgParts - .map((msgPart) => { - if (regexTokens && regexTokens.test(msgPart)) { - return msgPart; - } - - const muttableConfig = { - ...config, - phone: false, - stripTrailingSlash: false, - replaceFn: (match) => { - const token = `=!=${Random.id()}=!=`; - const tag = match.buildTag(); - - if (~match.matchedText.indexOf(Meteor.absoluteUrl())) { - tag.setAttr('target', ''); - } - - message.tokens = message.tokens ?? []; - message.tokens.push({ - token, - text: tag.toAnchorString(), - }); - return token; - }, - }; - - const autolinkerMsg = Autolinker.link(msgPart, muttableConfig); - - muttableConfig.phone = phone; - - return phone ? Autolinker.link(autolinkerMsg, muttableConfig) : autolinkerMsg; - }) - .join(''); - - return message; - }; diff --git a/apps/meteor/app/autolinker/client/index.js b/apps/meteor/app/autolinker/client/index.js deleted file mode 100644 index 4dbc40111253670c21ba83daa9a588a78b2a8481..0000000000000000000000000000000000000000 --- a/apps/meteor/app/autolinker/client/index.js +++ /dev/null @@ -1 +0,0 @@ -export { createAutolinkerMessageRenderer } from './client'; diff --git a/apps/meteor/app/autolinker/server/index.js b/apps/meteor/app/autolinker/server/index.js deleted file mode 100644 index 97097791afdc4deee566e5690c42b17dcbbfa5d9..0000000000000000000000000000000000000000 --- a/apps/meteor/app/autolinker/server/index.js +++ /dev/null @@ -1 +0,0 @@ -import './settings'; diff --git a/apps/meteor/app/autolinker/server/settings.ts b/apps/meteor/app/autolinker/server/settings.ts deleted file mode 100644 index 898e5b59a476d74a22b9c7d9d5846269a51f2aad..0000000000000000000000000000000000000000 --- a/apps/meteor/app/autolinker/server/settings.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Meteor } from 'meteor/meteor'; - -import { settingsRegistry } from '../../settings/server'; - -Meteor.startup(function () { - const enableQuery = { - _id: 'AutoLinker', - value: true, - }; - - settingsRegistry.add('AutoLinker', true, { - type: 'boolean', - group: 'Message', - section: 'AutoLinker', - public: true, - i18nLabel: 'Enabled', - alert: 'This_is_a_deprecated_feature_alert', - }); - - settingsRegistry.add('AutoLinker_StripPrefix', false, { - type: 'boolean', - group: 'Message', - section: 'AutoLinker', - public: true, - i18nDescription: 'AutoLinker_StripPrefix_Description', - enableQuery, - alert: 'This_is_a_deprecated_feature_alert', - }); - settingsRegistry.add('AutoLinker_Urls_Scheme', true, { - type: 'boolean', - group: 'Message', - section: 'AutoLinker', - public: true, - enableQuery, - alert: 'This_is_a_deprecated_feature_alert', - }); - settingsRegistry.add('AutoLinker_Urls_www', true, { - type: 'boolean', - group: 'Message', - section: 'AutoLinker', - public: true, - enableQuery, - alert: 'This_is_a_deprecated_feature_alert', - }); - settingsRegistry.add('AutoLinker_Urls_TLD', true, { - type: 'boolean', - group: 'Message', - section: 'AutoLinker', - public: true, - enableQuery, - alert: 'This_is_a_deprecated_feature_alert', - }); - settingsRegistry.add('AutoLinker_UrlsRegExp', '(://|www\\.).+', { - type: 'string', - group: 'Message', - section: 'AutoLinker', - public: true, - enableQuery, - alert: 'This_is_a_deprecated_feature_alert', - }); - settingsRegistry.add('AutoLinker_Email', true, { - type: 'boolean', - group: 'Message', - section: 'AutoLinker', - public: true, - enableQuery, - alert: 'This_is_a_deprecated_feature_alert', - }); - settingsRegistry.add('AutoLinker_Phone', true, { - type: 'boolean', - group: 'Message', - section: 'AutoLinker', - public: true, - i18nDescription: 'AutoLinker_Phone_Description', - enableQuery, - alert: 'This_is_a_deprecated_feature_alert', - }); -}); diff --git a/apps/meteor/app/autotranslate/server/autotranslate.ts b/apps/meteor/app/autotranslate/server/autotranslate.ts index 1d926fe5bb77a1b964c7882b531338501afe9b6f..9ade9beaa0ef62981ff0bf7c62f397370024e849 100644 --- a/apps/meteor/app/autotranslate/server/autotranslate.ts +++ b/apps/meteor/app/autotranslate/server/autotranslate.ts @@ -165,7 +165,7 @@ export abstract class AutoTranslate { tokenizeURLs(message: IMessage): IMessage { let count = message.tokens?.length || 0; - const schemes = settings.get<string>('Markdown_SupportSchemesForLink')?.split(',').join('|'); + const schemes = 'http,https'; // Support  and [text](http://link) message.msg = message.msg.replace( diff --git a/apps/meteor/app/issuelinks/client/client.js b/apps/meteor/app/issuelinks/client/client.js deleted file mode 100644 index 0a149ba1dfb633b2c25eb6b19031e050bab51600..0000000000000000000000000000000000000000 --- a/apps/meteor/app/issuelinks/client/client.js +++ /dev/null @@ -1,14 +0,0 @@ -export const createIssueLinksMessageRenderer = - ({ template }) => - (message) => { - if (!message.html?.trim()) { - return message; - } - - message.html = message.html.replace(/(?:^|\s|\n)(#[0-9]+)\b/g, (match, issueNumber) => { - const url = template.replace('%s', issueNumber.substring(1)); - return match.replace(issueNumber, `<a href="${url}" target="_blank">${issueNumber}</a>`); - }); - - return message; - }; diff --git a/apps/meteor/app/issuelinks/client/index.js b/apps/meteor/app/issuelinks/client/index.js deleted file mode 100644 index bd72fbfb085e5738717387de609822c6266832be..0000000000000000000000000000000000000000 --- a/apps/meteor/app/issuelinks/client/index.js +++ /dev/null @@ -1 +0,0 @@ -export { createIssueLinksMessageRenderer } from './client'; diff --git a/apps/meteor/app/issuelinks/server/index.js b/apps/meteor/app/issuelinks/server/index.js deleted file mode 100644 index 97097791afdc4deee566e5690c42b17dcbbfa5d9..0000000000000000000000000000000000000000 --- a/apps/meteor/app/issuelinks/server/index.js +++ /dev/null @@ -1 +0,0 @@ -import './settings'; diff --git a/apps/meteor/app/issuelinks/server/settings.ts b/apps/meteor/app/issuelinks/server/settings.ts deleted file mode 100644 index 57d07cf6fa542d0fe241fc81879ca163bef57989..0000000000000000000000000000000000000000 --- a/apps/meteor/app/issuelinks/server/settings.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { settingsRegistry } from '../../settings/server'; - -settingsRegistry.add('IssueLinks_Enabled', false, { - type: 'boolean', - i18nLabel: 'Enabled', - i18nDescription: 'IssueLinks_Incompatible', - group: 'Message', - section: 'Issue_Links', - public: true, - alert: 'This_is_a_deprecated_feature_alert', -}); - -settingsRegistry.add('IssueLinks_Template', '', { - type: 'string', - i18nLabel: 'IssueLinks_LinkTemplate', - i18nDescription: 'IssueLinks_LinkTemplate_Description', - group: 'Message', - section: 'Issue_Links', - public: true, - alert: 'This_is_a_deprecated_feature_alert', -}); diff --git a/apps/meteor/app/lib/server/functions/loadMessageHistory.ts b/apps/meteor/app/lib/server/functions/loadMessageHistory.ts index 3fe64be17d9eaaaaa0dd7e4f662d8823a8d18044..0dd28d080a574bcfccec85ee731fc7fcba7991a4 100644 --- a/apps/meteor/app/lib/server/functions/loadMessageHistory.ts +++ b/apps/meteor/app/lib/server/functions/loadMessageHistory.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/explicit-function-return-type */ -import { settings } from '../../../settings/server'; import { Messages, Rooms } from '../../../models/server'; import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser'; import { getHiddenSystemMessages } from '../lib/getHiddenSystemMessages'; @@ -34,12 +33,6 @@ export function loadMessageHistory({ fields: {}, }; - if (!settings.get('Message_ShowEditedStatus')) { - options.fields = { - editedAt: 0, - }; - } - const records = end != null ? Messages.findVisibleByRoomIdBeforeTimestampNotContainingTypes(rid, end, hiddenMessageTypes, options, showThreadMessages).fetch() diff --git a/apps/meteor/app/lib/server/methods/getChannelHistory.ts b/apps/meteor/app/lib/server/methods/getChannelHistory.ts index 948508dd5a3aff8349bb24cbf73a7673388a4e23..19eae5aa547727eeaed96241660cb60356682b54 100644 --- a/apps/meteor/app/lib/server/methods/getChannelHistory.ts +++ b/apps/meteor/app/lib/server/methods/getChannelHistory.ts @@ -4,7 +4,6 @@ import _ from 'underscore'; import { canAccessRoom, hasPermission } from '../../../authorization/server'; import { Subscriptions, Messages, Rooms } from '../../../models/server'; -import { settings } from '../../../settings/server'; import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser'; import { getHiddenSystemMessages } from '../lib/getHiddenSystemMessages'; @@ -59,10 +58,6 @@ Meteor.methods({ limit: count, }; - if (!settings.get('Message_ShowEditedStatus')) { - options.fields = { editedAt: 0 }; - } - const records = _.isUndefined(oldest) ? Messages.findVisibleByRoomIdBeforeTimestampNotContainingTypes( rid, diff --git a/apps/meteor/app/lib/server/startup/settings.ts b/apps/meteor/app/lib/server/startup/settings.ts index eb0f8c4e01dd8b7715f510f47528acb3fe9c8e3d..e4ad85ee7048273ecc91c45e1031319acbf6dadb 100644 --- a/apps/meteor/app/lib/server/startup/settings.ts +++ b/apps/meteor/app/lib/server/startup/settings.ts @@ -524,13 +524,6 @@ settingsRegistry.addGroup('Accounts', function () { public: true, i18nLabel: 'Notifications_Sound_Volume', }); - - this.add('Accounts_Default_User_Preferences_useLegacyMessageTemplate', false, { - type: 'boolean', - public: true, - i18nLabel: 'Use_Legacy_Message_Template', - alert: 'This_is_a_deprecated_feature_alert', - }); }); this.section('Avatar', function () { @@ -1135,13 +1128,6 @@ settingsRegistry.addGroup('General', function () { settingsRegistry.addGroup('Message', function () { this.section('Message_Attachments', function () { - this.add('Message_Attachments_GroupAttach', false, { - type: 'boolean', - public: true, - i18nDescription: 'Message_Attachments_GroupAttachDescription', - alert: 'This_is_a_deprecated_feature_alert', - }); - this.add('Message_Attachments_Thumbnails_Enabled', true, { type: 'boolean', public: true, @@ -1216,11 +1202,6 @@ settingsRegistry.addGroup('Message', function () { this.add('Message_AlwaysSearchRegExp', false, { type: 'boolean', }); - this.add('Message_ShowEditedStatus', true, { - type: 'boolean', - public: true, - alert: 'This_is_a_deprecated_feature_alert', - }); this.add('Message_ShowDeletedStatus', false, { type: 'boolean', public: true, @@ -1253,14 +1234,6 @@ settingsRegistry.addGroup('Message', function () { type: 'boolean', public: true, }); - /** - * @deprecated - */ - this.add('Message_ShowFormattingTips', true, { - type: 'boolean', - public: true, - alert: 'This_is_a_deprecated_feature_alert', - }); this.add('Message_GroupingPeriod', 300, { type: 'int', public: true, @@ -1288,13 +1261,6 @@ settingsRegistry.addGroup('Message', function () { i18nLabel: 'clear_cache_now', }); // TODO: deprecate this setting in favor of App - this.add('API_EmbedDisabledFor', '', { - type: 'string', - public: true, - i18nDescription: 'API_EmbedDisabledFor_Description', - alert: 'This_is_a_deprecated_feature_alert', - }); - // TODO: deprecate this setting in favor of App this.add('API_EmbedIgnoredHosts', 'localhost, 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16', { type: 'string', i18nDescription: 'API_EmbedIgnoredHosts_Description', diff --git a/apps/meteor/app/markdown/lib/markdown.js b/apps/meteor/app/markdown/lib/markdown.js index 7ee511d403e482036ce2e296dbd7c86274b64ddf..8f55cf17635c0dbcc7f810d6e2f60dfc38c293d1 100644 --- a/apps/meteor/app/markdown/lib/markdown.js +++ b/apps/meteor/app/markdown/lib/markdown.js @@ -5,15 +5,12 @@ import { Meteor } from 'meteor/meteor'; import { escapeHTML } from '@rocket.chat/string-helpers'; -import { marked } from './parser/marked/marked'; import { original } from './parser/original/original'; import { filtered } from './parser/filtered/filtered'; import { code } from './parser/original/code'; -import { settings } from '../../settings'; const parsers = { original, - marked, filtered, }; @@ -33,29 +30,11 @@ class MarkdownClass { } parseMessageNotEscaped(message) { - const parser = settings.get('Markdown_Parser'); - - if (parser === 'disabled') { - return message; - } - const options = { - supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'), - headers: settings.get('Markdown_Headers'), rootUrl: Meteor.absoluteUrl(), - marked: { - gfm: settings.get('Markdown_Marked_GFM'), - tables: settings.get('Markdown_Marked_Tables'), - breaks: settings.get('Markdown_Marked_Breaks'), - pedantic: settings.get('Markdown_Marked_Pedantic'), - smartLists: settings.get('Markdown_Marked_SmartLists'), - smartypants: settings.get('Markdown_Marked_Smartypants'), - }, }; - const parse = typeof parsers[parser] === 'function' ? parsers[parser] : parsers.original; - - return parse(message, options); + return parsers.original(message, options); } mountTokensBackRecursively(message, tokenList, useHtml = true) { @@ -91,9 +70,7 @@ class MarkdownClass { } filterMarkdownFromMessage(message) { - return parsers.filtered(message, { - supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'), - }); + return parsers.filtered(message); } } @@ -101,20 +78,14 @@ export const Markdown = new MarkdownClass(); export const filterMarkdown = (message) => Markdown.filterMarkdownFromMessage(message); -export const createMarkdownMessageRenderer = ({ parser, ...options }) => { - if (!parser || parser === 'disabled') { - return (message) => message; - } - - const parse = typeof parsers[parser] === 'function' ? parsers[parser] : parsers.original; - +export const createMarkdownMessageRenderer = ({ ...options }) => { return (message) => { if (!message?.html?.trim()) { return message; } - return parse(message, options); + return parsers.original(message, options); }; }; -export const createMarkdownNotificationRenderer = (options) => (message) => parsers.filtered(message, options); +export const createMarkdownNotificationRenderer = () => (message) => parsers.filtered(message); diff --git a/apps/meteor/app/markdown/lib/parser/marked/marked.js b/apps/meteor/app/markdown/lib/parser/marked/marked.js deleted file mode 100644 index a1aff30618c42e24b94ed06a71215027bb9b031b..0000000000000000000000000000000000000000 --- a/apps/meteor/app/markdown/lib/parser/marked/marked.js +++ /dev/null @@ -1,106 +0,0 @@ -import { Random } from 'meteor/random'; -import _ from 'underscore'; -import { marked as _marked } from 'marked'; -import createDOMPurify from 'dompurify'; -import { unescapeHTML, escapeHTML } from '@rocket.chat/string-helpers'; - -import hljs, { register } from '../../hljs'; -import { getGlobalWindow } from '../../getGlobalWindow'; - -const renderer = new _marked.Renderer(); - -let msg = null; - -renderer.code = function (code, lang, escaped) { - if (this.options.highlight) { - const out = this.options.highlight(code, lang); - if (out != null && out !== code) { - escaped = true; - code = out; - } - } - - let text = null; - - if (!lang) { - text = `<pre><code class="code-colors hljs">${escaped ? code : escapeHTML(code)}</code></pre>`; - } else { - text = `<pre><code class="code-colors hljs ${escape(lang, true)}">${escaped ? code : escapeHTML(code)}</code></pre>`; - } - - if (_.isString(msg)) { - return text; - } - - const token = `=!=${Random.id()}=!=`; - msg.tokens.push({ - highlight: true, - token, - text, - }); - - return token; -}; - -renderer.codespan = function (text) { - text = `<code class="code-colors inline">${text}</code>`; - if (_.isString(msg)) { - return text; - } - - const token = `=!=${Random.id()}=!=`; - msg.tokens.push({ - token, - text, - }); - - return token; -}; - -renderer.blockquote = function (quote) { - return `<blockquote class="background-transparent-darker-before">${quote}</blockquote>`; -}; - -const linkRenderer = renderer.link; -renderer.link = function (href, title, text) { - const html = linkRenderer.call(renderer, href, title, text); - return html.replace(/^<a /, '<a target="_blank" rel="nofollow noopener noreferrer" '); -}; - -const highlight = function (code, lang) { - if (!lang) { - return code; - } - try { - register(lang); - return hljs.highlight(lang, code).value; - } catch (e) { - // Unknown language - return code; - } -}; - -export const marked = (message, { marked: { gfm, tables, breaks, pedantic, smartLists, smartypants } = {} }) => { - msg = message; - - if (!message.tokens) { - message.tokens = []; - } - - message.html = _marked.parse(unescapeHTML(message.html), { - gfm, - tables, - breaks, - pedantic, - smartLists, - smartypants, - renderer, - highlight, - }); - - const window = getGlobalWindow(); - const DomPurify = createDOMPurify(window); - message.html = DomPurify.sanitize(message.html, { ADD_ATTR: ['target'], FORBID_ATTR: ['style'], FORBID_TAGS: ['style'] }); - - return message; -}; diff --git a/apps/meteor/app/markdown/server/index.js b/apps/meteor/app/markdown/server/index.js index 9b4f3084c58b8224e2980ae9308e8fd6d3ff1f94..8cf4e3078e48491db7576d1661eeb49d26abf85b 100644 --- a/apps/meteor/app/markdown/server/index.js +++ b/apps/meteor/app/markdown/server/index.js @@ -2,35 +2,20 @@ import { Meteor } from 'meteor/meteor'; import { Tracker } from 'meteor/tracker'; import { callbacks } from '../../../lib/callbacks'; -import { settings } from '../../settings/server'; import { createMarkdownMessageRenderer, createMarkdownNotificationRenderer } from '../lib/markdown'; -import './settings'; export { Markdown } from '../lib/markdown'; Meteor.startup(() => { Tracker.autorun(() => { const options = { - parser: settings.get('Markdown_Parser'), - supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'), - headers: settings.get('Markdown_Headers'), rootUrl: Meteor.absoluteUrl(), - marked: { - gfm: settings.get('Markdown_Marked_GFM'), - tables: settings.get('Markdown_Marked_Tables'), - breaks: settings.get('Markdown_Marked_Breaks'), - pedantic: settings.get('Markdown_Marked_Pedantic'), - smartLists: settings.get('Markdown_Marked_SmartLists'), - smartypants: settings.get('Markdown_Marked_Smartypants'), - }, }; const renderMessage = createMarkdownMessageRenderer(options); callbacks.add('renderMessage', renderMessage, callbacks.priority.HIGH, 'markdown'); }); - const renderNotification = createMarkdownNotificationRenderer({ - supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'), - }); + const renderNotification = createMarkdownNotificationRenderer(); callbacks.add('renderNotification', renderNotification, callbacks.priority.HIGH, 'filter-markdown'); }); diff --git a/apps/meteor/app/markdown/server/settings.ts b/apps/meteor/app/markdown/server/settings.ts deleted file mode 100644 index 34e878186714aef914dc8b6aa3195efc34023969..0000000000000000000000000000000000000000 --- a/apps/meteor/app/markdown/server/settings.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { settingsRegistry } from '../../settings/server'; - -settingsRegistry.add('Markdown_Parser', 'original', { - type: 'select', - values: [ - { - key: 'disabled', - i18nLabel: 'Disabled', - }, - { - key: 'original', - i18nLabel: 'Original', - }, - { - key: 'marked', - i18nLabel: 'Marked', - }, - ], - group: 'Message', - section: 'Markdown', - public: true, - alert: 'This_is_a_deprecated_feature_alert', -}); - -const enableQueryOriginal = { _id: 'Markdown_Parser', value: 'original' }; -settingsRegistry.add('Markdown_Headers', false, { - type: 'boolean', - group: 'Message', - section: 'Markdown', - public: true, - enableQuery: enableQueryOriginal, - alert: 'This_is_a_deprecated_feature_alert', -}); -settingsRegistry.add('Markdown_SupportSchemesForLink', 'http,https', { - type: 'string', - group: 'Message', - section: 'Markdown', - public: true, - i18nDescription: 'Markdown_SupportSchemesForLink_Description', - enableQuery: enableQueryOriginal, - alert: 'This_is_a_deprecated_feature_alert', -}); - -const enableQueryMarked = { _id: 'Markdown_Parser', value: 'marked' }; -settingsRegistry.add('Markdown_Marked_GFM', true, { - type: 'boolean', - group: 'Message', - section: 'Markdown', - public: true, - enableQuery: enableQueryMarked, - alert: 'This_is_a_deprecated_feature_alert', -}); -settingsRegistry.add('Markdown_Marked_Tables', true, { - type: 'boolean', - group: 'Message', - section: 'Markdown', - public: true, - enableQuery: enableQueryMarked, - alert: 'This_is_a_deprecated_feature_alert', -}); -settingsRegistry.add('Markdown_Marked_Breaks', true, { - type: 'boolean', - group: 'Message', - section: 'Markdown', - public: true, - enableQuery: enableQueryMarked, - alert: 'This_is_a_deprecated_feature_alert', -}); -settingsRegistry.add('Markdown_Marked_Pedantic', false, { - type: 'boolean', - group: 'Message', - section: 'Markdown', - public: true, - alert: 'This_is_a_deprecated_feature_alert', - enableQuery: [ - { - _id: 'Markdown_Parser', - value: 'marked', - }, - { - _id: 'Markdown_Marked_GFM', - value: false, - }, - ], -}); -settingsRegistry.add('Markdown_Marked_SmartLists', true, { - type: 'boolean', - group: 'Message', - section: 'Markdown', - public: true, - enableQuery: enableQueryMarked, - alert: 'This_is_a_deprecated_feature_alert', -}); -settingsRegistry.add('Markdown_Marked_Smartypants', true, { - type: 'boolean', - group: 'Message', - section: 'Markdown', - public: true, - enableQuery: enableQueryMarked, - alert: 'This_is_a_deprecated_feature_alert', -}); diff --git a/apps/meteor/app/message-snippet/client/index.js b/apps/meteor/app/message-snippet/client/index.js deleted file mode 100644 index d5b4777732047e66f6326070b76383501073eebb..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import './messageType'; -import './snippetMessage'; -import './page/snippetPage.html'; -import './page/snippetPage'; -import './tabBar/tabBar'; -import './tabBar/views/snippetedMessages.html'; -import './tabBar/views/snippetedMessages'; -import './page/stylesheets/snippetPage.css'; diff --git a/apps/meteor/app/message-snippet/client/lib/collections.js b/apps/meteor/app/message-snippet/client/lib/collections.js deleted file mode 100644 index ff80211fc3a38b048c053a42a9dae9109b040092..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/lib/collections.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const SnippetedMessages = new Mongo.Collection('rocketchat_snippeted_message'); diff --git a/apps/meteor/app/message-snippet/client/messageType.js b/apps/meteor/app/message-snippet/client/messageType.js deleted file mode 100644 index ccc2075553cc7302210289cebe2dc5174cf540a0..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/messageType.js +++ /dev/null @@ -1,18 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { escapeHTML } from '@rocket.chat/string-helpers'; - -import { MessageTypes } from '../../ui-utils'; - -Meteor.startup(function () { - MessageTypes.registerType({ - id: 'message_snippeted', - system: true, - message: 'Snippeted_a_message', - data(message) { - const snippetLink = `<a href="/snippet/${message.snippetId}/${encodeURIComponent(message.snippetName)}">${escapeHTML( - message.snippetName, - )}</a>`; - return { snippetLink }; - }, - }); -}); diff --git a/apps/meteor/app/message-snippet/client/page/snippetPage.html b/apps/meteor/app/message-snippet/client/page/snippetPage.html deleted file mode 100644 index 139c9ae9210affd427b86a91a98fdd3c2191d685..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/page/snippetPage.html +++ /dev/null @@ -1,21 +0,0 @@ -<template name="snippetPage"> - <div id="{{_id}}" class="snippet-page {{t}} {{own}} {{isTemp}}" data-username="{{u.username}}" data-groupable="{{isGroupable}}" data-date="{{date}}" data-timestamp="{{timestamp}}"> - <div class="snippet-informations"> - {{> avatar username=snippet.u.username}} - <span class="username">{{snippet.u.username}}</span> - <span class="snippet-filename">{{ snippet.snippetName }}</span> - </div> - - - - <span class="info"> {{_ "Snippet_Added" date }}</span> - <a class="download-button" target="_blank" href="/snippet/download/{{snippet._id}}/{{snippet.snippetName}}"> - <i class="icon-download"></i> - {{_ "Download_Snippet" }} - </a> - <div class="body" dir="auto"> - {{{ snippetContent }}} - </div> - </div> - -</template> diff --git a/apps/meteor/app/message-snippet/client/page/snippetPage.js b/apps/meteor/app/message-snippet/client/page/snippetPage.js deleted file mode 100644 index 0cd662305e7d763352544ad709dbf44feeaef296..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/page/snippetPage.js +++ /dev/null @@ -1,44 +0,0 @@ -import { FlowRouter } from 'meteor/kadira:flow-router'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Template } from 'meteor/templating'; -import moment from 'moment'; - -import { settings } from '../../../settings'; -import { Markdown } from '../../../markdown/client'; -import { APIClient } from '../../../utils/client'; -import { formatTime } from '../../../../client/lib/utils/formatTime'; - -Template.snippetPage.helpers({ - snippet() { - return Template.instance().message.get(); - }, - snippetContent() { - const message = Template.instance().message.get(); - if (message === undefined) { - return null; - } - message.html = message.msg; - const markdown = Markdown.parse(message); - return markdown.tokens[0].text; - }, - date() { - const snippet = Template.instance().message.get(); - if (snippet !== undefined) { - return moment(snippet.ts).format(settings.get('Message_DateFormat')); - } - }, - time() { - const snippet = Template.instance().message.get(); - if (snippet !== undefined) { - return formatTime(snippet.ts); - } - }, -}); - -Template.snippetPage.onCreated(async function () { - const snippetId = FlowRouter.getParam('snippetId'); - this.message = new ReactiveVar({}); - - const { message } = await APIClient.get('/v1/chat.getSnippetedMessageById', { messageId: snippetId }); - this.message.set(message); -}); diff --git a/apps/meteor/app/message-snippet/client/page/stylesheets/snippetPage.css b/apps/meteor/app/message-snippet/client/page/stylesheets/snippetPage.css deleted file mode 100644 index 1b3462721efd5b1a7bce086cae2b8f59fca8d53c..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/page/stylesheets/snippetPage.css +++ /dev/null @@ -1,62 +0,0 @@ -:root { - --snippet-page-left-border-size: 30px; - --snippet-page-top-border-size: 20px; - --snippet-informations-height: 40px; - --snippet-page-right-border-size: 30px; -} - -.snippet-page { - overflow-x: hidden; - overflow-y: auto; - - width: auto; - height: 100%; - padding-top: var(--snippet-page-top-border-size); - padding-right: var(--snippet-page-right-border-size); - padding-left: var(--snippet-page-left-border-size); - - & pre code, - & h1, - & span { - user-select: all; - } - - & .snippet-informations { - display: inline-block; - - width: 100%; - height: 60px; - - & .avatar { - display: block; - float: left; - clear: left; - - margin-right: 10px; - } - - & .username { - display: block; - - width: 100%; - } - - & .snippet-filename { - display: block; - - width: 100%; - - font-weight: bold; - } - } - - & .info { - color: darkgrey; - - font-style: italic; - } - - & .download-button { - float: right; - } -} diff --git a/apps/meteor/app/message-snippet/client/snippetMessage.js b/apps/meteor/app/message-snippet/client/snippetMessage.js deleted file mode 100644 index 3c8a35d6cfdc973baab9441de7aa5abf40e2da6e..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/snippetMessage.js +++ /dev/null @@ -1,35 +0,0 @@ -import { Meteor } from 'meteor/meteor'; - -import { settings } from '../../settings'; -import { ChatMessage, Subscriptions } from '../../models/client'; - -Meteor.methods({ - snippetMessage(message) { - if (typeof Meteor.userId() === 'undefined' || Meteor.userId() === null) { - return false; - } - if ( - typeof settings.get('Message_AllowSnippeting') === 'undefined' || - settings.get('Message_AllowSnippeting') === null || - settings.get('Message_AllowSnippeting') === false - ) { - return false; - } - - const subscription = Subscriptions.findOne({ 'rid': message.rid, 'u._id': Meteor.userId() }); - - if (subscription === undefined) { - return false; - } - ChatMessage.update( - { - _id: message._id, - }, - { - $set: { - snippeted: true, - }, - }, - ); - }, -}); diff --git a/apps/meteor/app/message-snippet/client/tabBar/tabBar.ts b/apps/meteor/app/message-snippet/client/tabBar/tabBar.ts deleted file mode 100644 index 6e36a47833a892d3457204ee889bf657f6ada856..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/tabBar/tabBar.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { useMemo } from 'react'; -import { useSetting } from '@rocket.chat/ui-contexts'; - -import { addAction } from '../../../../client/views/room/lib/Toolbox'; - -addAction('snippeted-messages', () => { - const snippetingEnabled = useSetting('Message_AllowSnippeting'); - return useMemo( - () => - snippetingEnabled - ? { - groups: ['channel', 'group', 'direct', 'direct_multiple', 'team'], - id: 'snippeted-messages', - title: 'snippet-message', - icon: 'code', - template: 'snippetedMessages', - order: 20, - } - : null, - [snippetingEnabled], - ); -}); diff --git a/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.html b/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.html deleted file mode 100644 index 2c047fbb9d34dc3e4e23d25535e19c7064993dd1..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.html +++ /dev/null @@ -1,24 +0,0 @@ -<template name="snippetedMessages"> - <div class="list-view snippeted-messages-list flex-tab__header"> - <div class="title"> - <h2>{{_ "Snippet_Messages"}}</h2> - </div> - {{#if Template.subscriptionsReady}} - {{#unless hasMessages}} - <h2>{{_ "No_snippet_messages"}}</h2> - {{/unless}} - {{/if}} - </div> - <div class="flex-tab__result js-list"> - <ul class="list clearfix"> - {{# with messageContext}} - {{#each msg in messages}}{{> message msg=msg room=room subscription=subscription settings=settings u=u}}{{/each}} - {{/with}} - </ul> - {{#if hasMore}} - <div class="load-more"> - {{> loading}} - </div> - {{/if}} - </div> -</template> diff --git a/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.js b/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.js deleted file mode 100644 index 48da295d07bcdeead4a0562e71b6ebad1bf6e9de..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/client/tabBar/views/snippetedMessages.js +++ /dev/null @@ -1,80 +0,0 @@ -import _ from 'underscore'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Template } from 'meteor/templating'; -import { Mongo } from 'meteor/mongo'; - -import { createMessageContext } from '../../../../ui-utils/client/lib/messageContext'; -import { APIClient } from '../../../../utils/client'; -import { Messages } from '../../../../models/client'; -import { upsertMessageBulk } from '../../../../ui-utils/client/lib/RoomHistoryManager'; - -const LIMIT_DEFAULT = 50; - -Template.snippetedMessages.helpers({ - hasMessages() { - return Template.instance().messages.find().count(); - }, - messages() { - const instance = Template.instance(); - return instance.messages.find({}, { limit: instance.limit.get(), sort: { ts: -1 } }); - }, - hasMore() { - return Template.instance().hasMore.get(); - }, - messageContext: createMessageContext, -}); - -Template.snippetedMessages.onCreated(function () { - this.rid = this.data.rid; - this.hasMore = new ReactiveVar(true); - this.messages = new Mongo.Collection(null); - this.limit = new ReactiveVar(LIMIT_DEFAULT); - - this.autorun(() => { - const query = { - _hidden: { $ne: true }, - snippeted: true, - rid: this.rid, - }; - - this.cursor && this.cursor.stop(); - - this.limit.set(LIMIT_DEFAULT); - - this.cursor = Messages.find(query).observe({ - added: ({ _id, ...message }) => { - this.messages.upsert({ _id }, message); - }, - changed: ({ _id, ...message }) => { - this.messages.upsert({ _id }, message); - }, - removed: ({ _id }) => { - this.messages.remove({ _id }); - }, - }); - }); - - this.autorun(async () => { - const limit = this.limit.get(); - const { messages, total } = await APIClient.get('/v1/chat.getSnippetedMessages', { - roomId: this.rid, - count: limit, - }); - - upsertMessageBulk({ msgs: messages }, this.messages); - - this.hasMore.set(total > limit); - }); -}); - -Template.snippetedMessages.onDestroyed(function () { - this.cursor.stop(); -}); - -Template.snippetedMessages.events({ - 'scroll .js-list': _.throttle(function (e, instance) { - if (e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight && instance.hasMore.get()) { - return instance.limit.set(instance.limit.get() + 50); - } - }, 200), -}); diff --git a/apps/meteor/app/message-snippet/server/index.js b/apps/meteor/app/message-snippet/server/index.js deleted file mode 100644 index 74e7fa9524c26048c84aa783a979ecd247401852..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/server/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import './startup/settings'; -import './methods/snippetMessage'; -import './requests'; diff --git a/apps/meteor/app/message-snippet/server/methods/snippetMessage.js b/apps/meteor/app/message-snippet/server/methods/snippetMessage.js deleted file mode 100644 index 987c3102c71dd4c9ae08b4dfef6643b2a9d08486..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/server/methods/snippetMessage.js +++ /dev/null @@ -1,55 +0,0 @@ -import { Meteor } from 'meteor/meteor'; - -import { Subscriptions, Messages, Users, Rooms } from '../../../models/server'; -import { settings } from '../../../settings/server'; -import { callbacks } from '../../../../lib/callbacks'; -import { isTheLastMessage } from '../../../lib'; - -Meteor.methods({ - snippetMessage(message, filename) { - if (Meteor.userId() == null) { - // noinspection JSUnresolvedFunction - throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'snippetMessage' }); - } - - const room = Rooms.findOne({ _id: message.rid }); - - if (typeof room === 'undefined' || room === null) { - return false; - } - - const subscription = Subscriptions.findOneByRoomIdAndUserId(message.rid, Meteor.userId(), { - fields: { _id: 1 }, - }); - if (!subscription) { - return false; - } - - const me = Users.findOneById(Meteor.userId()); - - // If we keep history of edits, insert a new message to store history information - if (settings.get('Message_KeepHistory')) { - Messages.cloneAndSaveAsHistoryById(message._id, me); - } - - message.snippeted = true; - message.snippetedAt = Date.now; - message.snippetedBy = { - _id: Meteor.userId(), - username: me.username, - }; - - message = callbacks.run('beforeSaveMessage', message); - - // Create the SnippetMessage - Messages.setSnippetedByIdAndUserId(message, filename, message.snippetedBy, message.snippeted, Date.now, filename); - if (isTheLastMessage(room, message)) { - Rooms.setLastMessageSnippeted(room._id, message, filename, message.snippetedBy, message.snippeted, Date.now, filename); - } - - Messages.createWithTypeRoomIdMessageAndUser('message_snippeted', message.rid, '', me, { - snippetId: message._id, - snippetName: filename, - }); - }, -}); diff --git a/apps/meteor/app/message-snippet/server/requests.js b/apps/meteor/app/message-snippet/server/requests.js deleted file mode 100644 index 63f74bf59a005b5151354b079724751b6851fe86..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/server/requests.js +++ /dev/null @@ -1,63 +0,0 @@ -import { WebApp } from 'meteor/webapp'; -import { Cookies } from 'meteor/ostrio:cookies'; - -import { Users, Rooms, Messages } from '../../models/server'; - -WebApp.connectHandlers.use('/snippet/download', function (req, res) { - let rawCookies; - let token; - let uid; - const cookie = new Cookies(); - - if (req.headers && req.headers.cookie !== null) { - rawCookies = req.headers.cookie; - } - - if (rawCookies !== null) { - uid = cookie.get('rc_uid', rawCookies); - } - - if (rawCookies !== null) { - token = cookie.get('rc_token', rawCookies); - } - - if (uid === null) { - uid = req.query.rc_uid; - token = req.query.rc_token; - } - - const user = Users.findOneByIdAndLoginToken(uid, token); - - if (!(uid && token && user)) { - res.writeHead(403); - res.end(); - return false; - } - const match = /^\/([^\/]+)\/(.*)/.exec(req.url); - - if (match[1]) { - const snippet = Messages.findOne({ - _id: match[1], - snippeted: true, - }); - const room = Rooms.findOne({ _id: snippet.rid, usernames: { $in: [user.username] } }); - if (room === undefined) { - res.writeHead(403); - res.end(); - return false; - } - - res.setHeader('Content-Disposition', `attachment; filename*=UTF-8''${encodeURIComponent(snippet.snippetName)}`); - res.setHeader('Content-Type', 'application/octet-stream'); - - // Removing the ``` contained in the msg. - const snippetContent = snippet.msg.substr(3, snippet.msg.length - 6); - res.setHeader('Content-Length', snippetContent.length); - res.write(snippetContent); - res.end(); - return; - } - - res.writeHead(404); - res.end(); -}); diff --git a/apps/meteor/app/message-snippet/server/startup/settings.ts b/apps/meteor/app/message-snippet/server/startup/settings.ts deleted file mode 100644 index eb20c713cb5c973e9e6b3e71bd3a775a8a7a2372..0000000000000000000000000000000000000000 --- a/apps/meteor/app/message-snippet/server/startup/settings.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { settingsRegistry } from '../../../settings/server'; - -settingsRegistry.add('Message_AllowSnippeting', false, { - type: 'boolean', - public: true, - group: 'Message', - alert: 'This_is_a_deprecated_feature_alert', -}); diff --git a/apps/meteor/app/models/server/models/Messages.js b/apps/meteor/app/models/server/models/Messages.js index e570c67ed779a9df34e33b51da71391d3aca0665..5b02eac244d859224951cb0dc059ad3f2653c4e6 100644 --- a/apps/meteor/app/models/server/models/Messages.js +++ b/apps/meteor/app/models/server/models/Messages.js @@ -21,7 +21,6 @@ export class Messages extends Base { this.tryEnsureIndex({ 'file._id': 1 }, { sparse: true }); this.tryEnsureIndex({ 'mentions.username': 1 }, { sparse: true }); this.tryEnsureIndex({ pinned: 1 }, { sparse: true }); - this.tryEnsureIndex({ snippeted: 1 }, { sparse: true }); this.tryEnsureIndex({ location: '2dsphere' }); this.tryEnsureIndex({ slackTs: 1, slackBotId: 1 }, { sparse: true }); this.tryEnsureIndex({ unread: 1 }, { sparse: true }); @@ -618,30 +617,6 @@ export class Messages extends Base { return this.update(query, update); } - setSnippetedByIdAndUserId(message, snippetName, snippetedBy, snippeted, snippetedAt) { - if (snippeted == null) { - snippeted = true; - } - if (snippetedAt == null) { - snippetedAt = 0; - } - const query = { _id: message._id }; - - const msg = `\`\`\`${message.msg}\`\`\``; - - const update = { - $set: { - msg, - snippeted, - snippetedAt: snippetedAt || new Date(), - snippetedBy, - snippetName, - }, - }; - - return this.update(query, update); - } - setUrlsById(_id, urls) { const query = { _id }; diff --git a/apps/meteor/app/models/server/models/Rooms.js b/apps/meteor/app/models/server/models/Rooms.js index 703cf3b28ec9978e1932c1e4f83c3a8a12ebbbaa..c8ad0ead74b137d7b2c9d91c8760c592793f0006 100644 --- a/apps/meteor/app/models/server/models/Rooms.js +++ b/apps/meteor/app/models/server/models/Rooms.js @@ -125,24 +125,6 @@ export class Rooms extends Base { return this.update(query, update); } - setLastMessageSnippeted(roomId, message, snippetName, snippetedBy, snippeted, snippetedAt) { - const query = { _id: roomId }; - - const msg = `\`\`\`${message.msg}\`\`\``; - - const update = { - $set: { - 'lastMessage.msg': msg, - 'lastMessage.snippeted': snippeted, - 'lastMessage.snippetedAt': snippetedAt || new Date(), - 'lastMessage.snippetedBy': snippetedBy, - 'lastMessage.snippetName': snippetName, - }, - }; - - return this.update(query, update); - } - setLastMessagePinned(roomId, pinnedBy, pinned, pinnedAt) { const query = { _id: roomId }; diff --git a/apps/meteor/app/ui-message/client/message.html b/apps/meteor/app/ui-message/client/message.html index f1ce01f8e126711e7ec8ff52254c748e8736ffe7..f9fbb46ed268e563930d1dfca0fa136c3e5a3d13 100644 --- a/apps/meteor/app/ui-message/client/message.html +++ b/apps/meteor/app/ui-message/client/message.html @@ -97,9 +97,6 @@ {{/if}} </div> <div class="body {{bodyClass}}" data-qa-type="message-body" dir="auto" data-unread-text="{{_ "Unread_Messages"}}"> - {{#if isSnippet}} - <div class="snippet-name">{{_ "Snippet_name"}}: {{snippetName}}</div> - {{/if}} {{#if msg.blocks}} <div class='rc-ui-kit'> {{> Blocks blocks=msg.blocks rid=msg.rid mid=msg._id}} diff --git a/apps/meteor/app/ui-message/client/message.js b/apps/meteor/app/ui-message/client/message.js index f0bffebb9a52b69c46dd6ed67d8b9c2c7f100b9e..38eed20870fbb7859a704ee7d1b3ee0684724373 100644 --- a/apps/meteor/app/ui-message/client/message.js +++ b/apps/meteor/app/ui-message/client/message.js @@ -309,15 +309,6 @@ Template.message.helpers({ return false; } - // check if oembed is disabled for message's sender - if ( - (settings.API_EmbedDisabledFor || '') - .split(',') - .map((username) => username.trim()) - .includes(msg.u && msg.u.username) - ) { - return false; - } return true; }, reactions() { @@ -446,10 +437,6 @@ Template.message.helpers({ messageActions() { return Template.instance().actions.get(); }, - isSnippet() { - const { msg } = this; - return msg.actionContext === 'snippeted'; - }, isThreadReply() { const { groupable, diff --git a/apps/meteor/app/ui-message/client/messageBox/messageBoxFormatting.ts b/apps/meteor/app/ui-message/client/messageBox/messageBoxFormatting.ts index 4078a1c2e6a194bf73a8a35a5392b83d5cbc37f5..b92d23e76c5b6f8832388ff4de6bce9c9926ff8f 100644 --- a/apps/meteor/app/ui-message/client/messageBox/messageBoxFormatting.ts +++ b/apps/meteor/app/ui-message/client/messageBox/messageBoxFormatting.ts @@ -2,7 +2,6 @@ import type { Icon } from '@rocket.chat/fuselage'; import type { TranslationKey } from '@rocket.chat/ui-contexts'; import type { ComponentProps } from 'react'; -import { Markdown } from '../../../markdown/client'; import { settings } from '../../../settings/client'; export type FormattingButton = @@ -13,13 +12,13 @@ export type FormattingButton = // text?: () => string | undefined; command?: string; link?: string; - condition: () => boolean; + condition?: () => boolean; } | { label: TranslationKey; text: () => string | undefined; link: string; - condition: () => boolean; + condition?: () => boolean; }; export const formattingButtons: ReadonlyArray<FormattingButton> = [ @@ -28,45 +27,27 @@ export const formattingButtons: ReadonlyArray<FormattingButton> = [ icon: 'bold', pattern: '*{{text}}*', command: 'b', - condition: () => Markdown && settings.get('Markdown_Parser') === 'original', - }, - { - label: 'bold', - icon: 'bold', - pattern: '**{{text}}**', - command: 'b', - condition: () => Markdown && settings.get('Markdown_Parser') === 'marked', }, { label: 'italic', icon: 'italic', pattern: '_{{text}}_', command: 'i', - condition: () => Markdown && settings.get('Markdown_Parser') !== 'disabled', }, { label: 'strike', icon: 'strike', pattern: '~{{text}}~', - condition: () => Markdown && settings.get('Markdown_Parser') === 'original', - }, - { - label: 'strike', - icon: 'strike', - pattern: '~~{{text}}~~', - condition: () => Markdown && settings.get('Markdown_Parser') === 'marked', }, { label: 'inline_code', icon: 'code', pattern: '`{{text}}`', - condition: () => Markdown && settings.get('Markdown_Parser') !== 'disabled', }, { label: 'multi_line', icon: 'multiline', pattern: '```\n{{text}}\n``` ', - condition: () => Markdown && settings.get('Markdown_Parser') !== 'disabled', }, { label: 'KaTeX' as TranslationKey, diff --git a/apps/meteor/app/ui-utils/client/lib/messageContext.ts b/apps/meteor/app/ui-utils/client/lib/messageContext.ts index c5ad7e0d2fc05d2fd10328f5c063df74b236c00b..14f519d7d348feb91fbe776924cfa780de4392fe 100644 --- a/apps/meteor/app/ui-utils/client/lib/messageContext.ts +++ b/apps/meteor/app/ui-utils/client/lib/messageContext.ts @@ -14,7 +14,6 @@ import type { CommonRoomTemplateInstance } from '../../../ui/client/views/app/li const fields = { 'name': 1, 'username': 1, - 'settings.preferences.useLegacyMessageTemplate': 1, 'settings.preferences.autoImageLoad': 1, 'settings.preferences.saveMobileBandwidth': 1, 'settings.preferences.collapseMediaByDefault': 1, @@ -51,7 +50,6 @@ export const createMessageContext = ({ ), translateLanguage = AutoTranslate.getLanguage(rid), autoImageLoad = getUserPreference(user, 'autoImageLoad'), - useLegacyMessageTemplate = getUserPreference(user, 'useLegacyMessageTemplate'), saveMobileBandwidth = Meteor.Device.isPhone() && getUserPreference(user, 'saveMobileBandwidth'), collapseMediaByDefault = getUserPreference(user, 'collapseMediaByDefault'), showreply = true, @@ -70,12 +68,8 @@ export const createMessageContext = ({ // eslint-disable-next-line @typescript-eslint/naming-convention Message_AllowEditing_BlockEditInMinutes = settings.get('Message_AllowEditing_BlockEditInMinutes'), // eslint-disable-next-line @typescript-eslint/naming-convention - Message_ShowEditedStatus = settings.get('Message_ShowEditedStatus'), - // eslint-disable-next-line @typescript-eslint/naming-convention API_Embed = settings.get('API_Embed'), // eslint-disable-next-line @typescript-eslint/naming-convention - API_EmbedDisabledFor = settings.get('API_EmbedDisabledFor'), - // eslint-disable-next-line @typescript-eslint/naming-convention Message_GroupingPeriod = settings.get('Message_GroupingPeriod') * 1000, }: { uid?: IUser['_id'] | null; @@ -87,7 +81,6 @@ export const createMessageContext = ({ embeddedLayout?: boolean; translateLanguage?: unknown; autoImageLoad?: unknown; - useLegacyMessageTemplate?: unknown; saveMobileBandwidth?: unknown; collapseMediaByDefault?: unknown; showreply?: unknown; @@ -100,9 +93,7 @@ export const createMessageContext = ({ AutoTranslate_Enabled?: unknown; Message_AllowEditing?: unknown; Message_AllowEditing_BlockEditInMinutes?: unknown; - Message_ShowEditedStatus?: unknown; API_Embed?: unknown; - API_EmbedDisabledFor?: unknown; Message_GroupingPeriod?: unknown; } = {}) => { return { @@ -112,7 +103,6 @@ export const createMessageContext = ({ settings: { translateLanguage, autoImageLoad, - useLegacyMessageTemplate, saveMobileBandwidth, collapseMediaByDefault, showreply, @@ -125,9 +115,7 @@ export const createMessageContext = ({ AutoTranslate_Enabled, Message_AllowEditing, Message_AllowEditing_BlockEditInMinutes, - Message_ShowEditedStatus, API_Embed, - API_EmbedDisabledFor, Message_GroupingPeriod, }, } as const; diff --git a/apps/meteor/client/components/MarkdownText.tsx b/apps/meteor/client/components/MarkdownText.tsx index a5591227aad9a1ffc60eb6aefba183ff7a5301c2..23f2968e8582e2f5e3bb420af2bc6101edecf178 100644 --- a/apps/meteor/client/components/MarkdownText.tsx +++ b/apps/meteor/client/components/MarkdownText.tsx @@ -1,5 +1,4 @@ import { Box } from '@rocket.chat/fuselage'; -import { useSetting } from '@rocket.chat/ui-contexts'; import dompurify from 'dompurify'; import { marked } from 'marked'; import type { ComponentProps, FC } from 'react'; @@ -89,7 +88,7 @@ const MarkdownText: FC<Partial<MarkdownTextParams>> = ({ let markedOptions: marked.MarkedOptions; - const schemes = useSetting('Markdown_SupportSchemesForLink') as string; + const schemes = 'http,https'; switch (variant) { case 'inline': diff --git a/apps/meteor/client/importPackages.ts b/apps/meteor/client/importPackages.ts index 3dc430e1eda694351c6f3c50afbb9326b660d6fb..3843b7fcd9e2bc83830e7178a150c51e9bd2dc0f 100644 --- a/apps/meteor/client/importPackages.ts +++ b/apps/meteor/client/importPackages.ts @@ -29,7 +29,6 @@ import '../app/logger/client'; import '../app/markdown/client'; import '../app/message-attachments/client'; import '../app/message-mark-as-unread/client'; -import '../app/message-snippet/client'; import '../app/nextcloud/client'; import '../app/oauth2-server-config/client'; import '../app/oembed/client'; diff --git a/apps/meteor/client/startup/renderMessage/autolinker.ts b/apps/meteor/client/startup/renderMessage/autolinker.ts deleted file mode 100644 index 2429b0a1a9e7eec7933cff769526d8ad9ccf9d07..0000000000000000000000000000000000000000 --- a/apps/meteor/client/startup/renderMessage/autolinker.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Tracker } from 'meteor/tracker'; - -import { settings } from '../../../app/settings/client'; -import { callbacks } from '../../../lib/callbacks'; - -Meteor.startup(() => { - Tracker.autorun(() => { - const isEnabled = settings.get('AutoLinker') === true; - - if (!isEnabled) { - callbacks.remove('renderMessage', 'autolinker'); - return; - } - - const options = { - stripPrefix: settings.get('AutoLinker_StripPrefix'), - urls: { - schemeMatches: settings.get('AutoLinker_Urls_Scheme'), - wwwMatches: settings.get('AutoLinker_Urls_www'), - tldMatches: settings.get('AutoLinker_Urls_TLD'), - }, - email: settings.get('AutoLinker_Email'), - phone: settings.get('AutoLinker_Phone'), - }; - - import('../../../app/autolinker/client').then(({ createAutolinkerMessageRenderer }) => { - const renderMessage = createAutolinkerMessageRenderer(options); - callbacks.remove('renderMessage', 'autolinker'); - callbacks.add('renderMessage', renderMessage, callbacks.priority.MEDIUM, 'autolinker'); - }); - }); -}); diff --git a/apps/meteor/client/startup/renderMessage/index.ts b/apps/meteor/client/startup/renderMessage/index.ts index 09eeca80dd1e76d92e338f253c736008d2eca571..ec329d84b5301387d568f455ec961642c7706e6b 100644 --- a/apps/meteor/client/startup/renderMessage/index.ts +++ b/apps/meteor/client/startup/renderMessage/index.ts @@ -1,9 +1,6 @@ -import './autolinker'; import './autotranslate'; import './emoji'; import './hexcolor'; import './highlightWords'; -import './issuelink'; import './katex'; -import './markdown'; import './mentionsMessage'; diff --git a/apps/meteor/client/startup/renderMessage/issuelink.ts b/apps/meteor/client/startup/renderMessage/issuelink.ts deleted file mode 100644 index ba96e825339785ac01bbcd0096c83b847a1b1388..0000000000000000000000000000000000000000 --- a/apps/meteor/client/startup/renderMessage/issuelink.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Tracker } from 'meteor/tracker'; - -import { settings } from '../../../app/settings/client'; -import { callbacks } from '../../../lib/callbacks'; - -Meteor.startup(() => { - Tracker.autorun(() => { - const isEnabled = settings.get('IssueLinks_Enabled'); - - if (!isEnabled) { - callbacks.remove('renderMessage', 'issuelink'); - return; - } - - const options = { - template: settings.get('IssueLinks_Template'), - }; - - import('../../../app/issuelinks/client').then(({ createIssueLinksMessageRenderer }) => { - const renderMessage = createIssueLinksMessageRenderer(options); - callbacks.remove('renderMessage', 'issuelink'); - callbacks.add('renderMessage', renderMessage, callbacks.priority.MEDIUM, 'issuelink'); - }); - }); -}); diff --git a/apps/meteor/client/startup/renderMessage/markdown.ts b/apps/meteor/client/startup/renderMessage/markdown.ts deleted file mode 100644 index d13e4f3b9cda6b0477765570c928ae76f3c71bd2..0000000000000000000000000000000000000000 --- a/apps/meteor/client/startup/renderMessage/markdown.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Tracker } from 'meteor/tracker'; - -import { settings } from '../../../app/settings/client'; -import { callbacks } from '../../../lib/callbacks'; - -Meteor.startup(() => { - Tracker.autorun(() => { - const options = { - parser: settings.get('Markdown_Parser'), - supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'), - headers: settings.get('Markdown_Headers'), - rootUrl: Meteor.absoluteUrl(), - marked: { - gfm: settings.get('Markdown_Marked_GFM'), - tables: settings.get('Markdown_Marked_Tables'), - breaks: settings.get('Markdown_Marked_Breaks'), - pedantic: settings.get('Markdown_Marked_Pedantic'), - smartLists: settings.get('Markdown_Marked_SmartLists'), - smartypants: settings.get('Markdown_Marked_Smartypants'), - }, - }; - - import('../../../app/markdown/client').then(({ createMarkdownMessageRenderer }) => { - const renderMessage = createMarkdownMessageRenderer(options); - callbacks.remove('renderMessage', 'markdown'); - callbacks.add('renderMessage', renderMessage, callbacks.priority.HIGH, 'markdown'); - }); - }); -}); diff --git a/apps/meteor/client/startup/renderNotification/markdown.ts b/apps/meteor/client/startup/renderNotification/markdown.ts index 8c83f75776d042e9a98d653ba61867c7c5bcc1be..1d8ca18164e8ade7261fdc36b8b3c42104d65de3 100644 --- a/apps/meteor/client/startup/renderNotification/markdown.ts +++ b/apps/meteor/client/startup/renderNotification/markdown.ts @@ -1,15 +1,10 @@ import { Meteor } from 'meteor/meteor'; -import { settings } from '../../../app/settings/client'; import { callbacks } from '../../../lib/callbacks'; Meteor.startup(() => { - const options = { - supportSchemesForLink: settings.get('Markdown_SupportSchemesForLink'), - }; - import('../../../app/markdown/client').then(({ createMarkdownNotificationRenderer }) => { - const renderNotification = createMarkdownNotificationRenderer(options); + const renderNotification = createMarkdownNotificationRenderer(); callbacks.remove('renderNotification', 'filter-markdown'); callbacks.add('renderNotification', renderNotification, callbacks.priority.HIGH, 'filter-markdown'); }); diff --git a/apps/meteor/client/startup/routes.tsx b/apps/meteor/client/startup/routes.tsx index 9a12675ca871c39726ca59b372bb6b15da54c846..334c787b7d55e6ae0e5202e5795469317f237014 100644 --- a/apps/meteor/client/startup/routes.tsx +++ b/apps/meteor/client/startup/routes.tsx @@ -235,17 +235,6 @@ FlowRouter.route('/reset-password/:token', { }, }); -FlowRouter.route('/snippet/:snippetId/:snippetName', { - name: 'snippetView', - action() { - appLayout.render( - <MainLayout> - <BlazeTemplate template='snippetPage' /> - </MainLayout>, - ); - }, -}); - FlowRouter.route('/oauth/authorize', { name: 'oauth/authorize', action() { diff --git a/apps/meteor/client/views/account/preferences/PreferencesGlobalSection.tsx b/apps/meteor/client/views/account/preferences/PreferencesGlobalSection.tsx index b53249b40a950ba79181fa96484a90e6e065fad5..7c2410deb9fb7b2b3288adede4384d94de2b0380 100644 --- a/apps/meteor/client/views/account/preferences/PreferencesGlobalSection.tsx +++ b/apps/meteor/client/views/account/preferences/PreferencesGlobalSection.tsx @@ -1,5 +1,5 @@ import type { SelectOption } from '@rocket.chat/fuselage'; -import { Accordion, Field, FieldGroup, MultiSelect, ToggleSwitch, Callout } from '@rocket.chat/fuselage'; +import { Accordion, Field, FieldGroup, MultiSelect } from '@rocket.chat/fuselage'; import { useUserPreference, useTranslation } from '@rocket.chat/ui-contexts'; import type { ReactElement } from 'react'; import React, { useMemo } from 'react'; @@ -11,7 +11,6 @@ const PreferencesGlobalSection = ({ onChange, commitRef, ...props }: FormSection const t = useTranslation(); const userDontAskAgainList = useUserPreference<{ action: string; label: string }[]>('dontAskAgainList'); - const userLegacyMessageTemplate = useUserPreference('useLegacyMessageTemplate'); const options = useMemo( () => (userDontAskAgainList || []).map(({ action, label }) => [action, label]) as SelectOption[], @@ -23,17 +22,15 @@ const PreferencesGlobalSection = ({ onChange, commitRef, ...props }: FormSection const { values, handlers, commit } = useForm( { dontAskAgainList: selectedOptions, - useLegacyMessageTemplate: userLegacyMessageTemplate, }, onChange, ); - const { dontAskAgainList, useLegacyMessageTemplate } = values as { + const { dontAskAgainList } = values as { dontAskAgainList: string[]; - useLegacyMessageTemplate: boolean; }; - const { handleDontAskAgainList, handleUseLegacyMessageTemplate } = handlers; + const { handleDontAskAgainList } = handlers; commitRef.current.global = commit; @@ -51,13 +48,6 @@ const PreferencesGlobalSection = ({ onChange, commitRef, ...props }: FormSection /> </Field.Row> </Field> - <Field display='flex' alignItems='center' flexDirection='row' justifyContent='spaceBetween' flexGrow={1}> - <Field.Label>{t('Use_Legacy_Message_Template')}</Field.Label> - <Field.Row> - <ToggleSwitch checked={useLegacyMessageTemplate} onChange={handleUseLegacyMessageTemplate} /> - </Field.Row> - </Field> - <Callout type='warning'>{t('This_is_a_deprecated_feature_alert')}</Callout> </FieldGroup> </Accordion.Item> ); diff --git a/apps/meteor/client/views/admin/info/DeploymentCard.stories.tsx b/apps/meteor/client/views/admin/info/DeploymentCard.stories.tsx index c591d920604932eefa42b4d8319b493af20dad33..f5aceed9634e10020fd027d2e697f43358e4931b 100644 --- a/apps/meteor/client/views/admin/info/DeploymentCard.stories.tsx +++ b/apps/meteor/client/views/admin/info/DeploymentCard.stories.tsx @@ -202,10 +202,8 @@ export default { customScript: 0, tabInvites: 0, totalEmailInvitation: 0, - totalRoomsWithSnippet: 0, totalRoomsWithStarred: 0, totalRoomsWithPinned: 0, - totalSnippet: 0, totalStarred: 0, totalPinned: 0, totalE2ERooms: 0, diff --git a/apps/meteor/client/views/admin/info/InformationPage.stories.tsx b/apps/meteor/client/views/admin/info/InformationPage.stories.tsx index b5c91798d5f40690cd70b659d3c76fef1b7173a7..cd0b6fa64c97194a26c155b3fd0c2fe63550f871 100644 --- a/apps/meteor/client/views/admin/info/InformationPage.stories.tsx +++ b/apps/meteor/client/views/admin/info/InformationPage.stories.tsx @@ -232,10 +232,8 @@ export default { customScript: 0, tabInvites: 0, totalEmailInvitation: 0, - totalRoomsWithSnippet: 0, totalRoomsWithStarred: 0, totalRoomsWithPinned: 0, - totalSnippet: 0, totalStarred: 0, totalPinned: 0, totalE2ERooms: 0, diff --git a/apps/meteor/client/views/admin/info/UsageCard.stories.tsx b/apps/meteor/client/views/admin/info/UsageCard.stories.tsx index 2081987efebc696565deeab5fc9a05c25d87e802..081731e529cf09b9cc30925fdbc7ea9755ea3c2b 100644 --- a/apps/meteor/client/views/admin/info/UsageCard.stories.tsx +++ b/apps/meteor/client/views/admin/info/UsageCard.stories.tsx @@ -180,10 +180,8 @@ export default { customScript: 0, tabInvites: 0, totalEmailInvitation: 0, - totalRoomsWithSnippet: 0, totalRoomsWithStarred: 0, totalRoomsWithPinned: 0, - totalSnippet: 0, totalStarred: 0, totalPinned: 0, totalE2ERooms: 0, diff --git a/apps/meteor/client/views/room/components/body/RoomBody.tsx b/apps/meteor/client/views/room/components/body/RoomBody.tsx index 5237ff6d7b8307754102a32e9e37e527fc96768a..e658afeb20666b9db91bc2b3ec696e337c347efc 100644 --- a/apps/meteor/client/views/room/components/body/RoomBody.tsx +++ b/apps/meteor/client/views/room/components/body/RoomBody.tsx @@ -33,11 +33,9 @@ import MessageListErrorBoundary from '../../MessageList/MessageListErrorBoundary import { useChat } from '../../contexts/ChatContext'; import { useRoom, useRoomSubscription, useRoomMessages } from '../../contexts/RoomContext'; import { useToolboxContext } from '../../contexts/ToolboxContext'; -import { useLegacyMessageEvents } from '../../hooks/useLegacyMessageEvents'; import DropTargetOverlay from './DropTargetOverlay'; import JumpToRecentMessagesBar from './JumpToRecentMessagesBar'; import LeaderBar from './LeaderBar'; -import LegacyMessageTemplateList from './LegacyMessageTemplateList'; import LoadingMessagesIndicator from './LoadingMessagesIndicator'; import NewMessagesButton from './NewMessagesButton'; import RetentionPolicyWarning from './RetentionPolicyWarning'; @@ -65,7 +63,6 @@ const RoomBody = (): ReactElement => { const hideFlexTab = useUserPreference<boolean>('hideFlexTab'); const hideUsernames = useUserPreference<boolean>('hideUsernames'); const displayAvatars = useUserPreference<boolean>('displayAvatars'); - const useLegacyMessageTemplate = useUserPreference<boolean>('useLegacyMessageTemplate') ?? false; const wrapperRef = useRef<HTMLDivElement | null>(null); const messagesBoxRef = useRef<HTMLDivElement | null>(null); @@ -319,19 +316,6 @@ const RoomBody = (): ReactElement => { }; }, [room._id, setUnreadCount]); - useLegacyMessageEvents({ - messageListRef: { - get current() { - if (!useLegacyMessageTemplate) { - return null; - } - - return wrapperRef.current?.querySelector('ul') ?? null; - }, - }, - onRequestScrollToBottom: sendToBottomIfNecessary, - }); - useEffect(() => { const wrapper = wrapperRef.current; @@ -616,7 +600,7 @@ const RoomBody = (): ReactElement => { )} </> ) : null} - {useLegacyMessageTemplate ? <LegacyMessageTemplateList room={room} /> : <MessageList rid={room._id} />} + <MessageList rid={room._id} /> {hasMoreNextMessages ? ( <li className='load-more'>{isLoadingMoreMessages ? <LoadingMessagesIndicator /> : null}</li> ) : null} diff --git a/apps/meteor/client/views/room/components/body/useRoomMessageContext.ts b/apps/meteor/client/views/room/components/body/useRoomMessageContext.ts index a5f01705adf48115f18c7c3bed844d2574c238ba..77c7aba178bec7b42e20d34743f6b898f89ea07c 100644 --- a/apps/meteor/client/views/room/components/body/useRoomMessageContext.ts +++ b/apps/meteor/client/views/room/components/body/useRoomMessageContext.ts @@ -16,7 +16,6 @@ export const useRoomMessageContext = (room: IRoom) => { const { isMobile: mobile } = useLayout(); const translateLanguage = useReactiveValue(useCallback(() => AutoTranslate.getLanguage(rid), [rid])); const autoImageLoad = useUserPreference('autoImageLoad'); - const useLegacyMessageTemplate = useUserPreference('useLegacyMessageTemplate'); const saveMobileBandwidth = useUserPreference('saveMobileBandwidth'); const collapseMediaByDefault = useUserPreference('collapseMediaByDefault'); const hasPermissionDeleteMessage = usePermission('delete-message', rid); @@ -28,9 +27,7 @@ export const useRoomMessageContext = (room: IRoom) => { const autoTranslateEnabled = useSetting('AutoTranslate_Enabled'); const allowEditing = useSetting('Message_AllowEditing'); const blockEditInMinutes = useSetting('Message_AllowEditing_BlockEditInMinutes'); - const showEditedStatus = useSetting('Message_ShowEditedStatus'); const embed = useSetting('API_Embed'); - const embedDisabledFor = useSetting('API_EmbedDisabledFor'); const groupingPeriod = useSetting('Message_GroupingPeriod') as number; return useMemo( @@ -43,7 +40,6 @@ export const useRoomMessageContext = (room: IRoom) => { subscription, translateLanguage, autoImageLoad, - useLegacyMessageTemplate, saveMobileBandwidth: mobile && saveMobileBandwidth, collapseMediaByDefault, showreply: true, @@ -56,9 +52,7 @@ export const useRoomMessageContext = (room: IRoom) => { AutoTranslate_Enabled: autoTranslateEnabled, Message_AllowEditing: allowEditing, Message_AllowEditing_BlockEditInMinutes: blockEditInMinutes, - Message_ShowEditedStatus: showEditedStatus, API_Embed: embed, - API_EmbedDisabledFor: embedDisabledFor, Message_GroupingPeriod: groupingPeriod * 1000, }), [ @@ -70,7 +64,6 @@ export const useRoomMessageContext = (room: IRoom) => { collapseMediaByDefault, displayRoles, embed, - embedDisabledFor, groupingPeriod, hasPermissionDeleteMessage, hasPermissionDeleteOwnMessage, @@ -79,11 +72,9 @@ export const useRoomMessageContext = (room: IRoom) => { rid, room, saveMobileBandwidth, - showEditedStatus, subscription, translateLanguage, uid, - useLegacyMessageTemplate, useRealName, user, ], diff --git a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx index b2d0f1920374cbca8c7eb28a2f6f2e3d4be8d13c..f2d61153708a1a870de3448e025333d7e987e382 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx +++ b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadChat.tsx @@ -15,7 +15,6 @@ import { useFileUploadDropTarget } from '../../../components/body/useFileUploadD import { useChat } from '../../../contexts/ChatContext'; import { useRoom, useRoomSubscription } from '../../../contexts/RoomContext'; import { useTabBarClose } from '../../../contexts/ToolboxContext'; -import LegacyThreadMessageList from './LegacyThreadMessageList'; import ThreadMessageList from './ThreadMessageList'; type ThreadChatProps = { @@ -105,18 +104,12 @@ const ThreadChat: VFC<ThreadChatProps> = ({ mainMessage }) => { const sendToChannelID = useUniqueId(); const t = useTranslation(); - const useLegacyMessageTemplate = useUserPreference<boolean>('useLegacyMessageTemplate') ?? false; - return ( <VerticalBarContent flexShrink={1} flexGrow={1} paddingInline={0} {...fileUploadTriggerProps}> <DropTargetOverlay {...fileUploadOverlayProps} /> <Box is='section' display='flex' flexDirection='column' flexGrow={1} flexShrink={1} flexBasis='auto' height='full'> <MessageListErrorBoundary> - {useLegacyMessageTemplate ? ( - <LegacyThreadMessageList mainMessage={mainMessage} jumpTo={jump} onJumpTo={handleJumpTo} /> - ) : ( - <ThreadMessageList mainMessage={mainMessage} jumpTo={jump} onJumpTo={handleJumpTo} /> - )} + <ThreadMessageList mainMessage={mainMessage} jumpTo={jump} onJumpTo={handleJumpTo} /> </MessageListErrorBoundary> <ComposerContainer diff --git a/apps/meteor/definition/externals/meteor/templating.d.ts b/apps/meteor/definition/externals/meteor/templating.d.ts index 5ec2bb9755892324f02bcf2d1fb3822088f8e317..2c62feb97668f6e30a829a81897ab98faf8ee178 100644 --- a/apps/meteor/definition/externals/meteor/templating.d.ts +++ b/apps/meteor/definition/externals/meteor/templating.d.ts @@ -38,8 +38,6 @@ declare module 'meteor/templating' { liveStreamBroadcast: Blaze.Template<any, Blaze.TemplateInstance<any>>; liveStreamTab: Blaze.Template<any, Blaze.TemplateInstance<any>>; liveStreamView: Blaze.Template<any, Blaze.TemplateInstance<any>>; - snippetPage: Blaze.Template<any, Blaze.TemplateInstance<any>>; - snippetedMessages: Blaze.Template<any, Blaze.TemplateInstance<any>>; inputAutocomplete: Blaze.Template<any, Blaze.TemplateInstance<any>>; textareaAutocomplete: Blaze.Template<any, Blaze.TemplateInstance<any>>; _autocompleteContainer: Blaze.Template<any, Blaze.TemplateInstance<any>>; diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index 1e5b8465826604168027b80f3239c483ca5b7353..2df3747d641f2344585cd39e566d575e10a361d1 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -399,14 +399,12 @@ "API_Drupal_URL_Description": "Example: https://domain.com (excluding trailing slash)", "API_Embed": "Embed Link Previews", "API_Embed_Description": "Whether embedded link previews are enabled or not when a user posts a link to a website.", - "API_Embed_UserAgent": "Embed Request User Agent", - "API_EmbedCacheExpirationDays": "Embed Cache Expiration Days", - "API_EmbedDisabledFor": "Disable Embed for Users", - "API_EmbedDisabledFor_Description": "Comma-separated list of usernames to disable the embedded link previews.", "API_EmbedIgnoredHosts": "Embed Ignored Hosts", "API_EmbedIgnoredHosts_Description": "Comma-separated list of hosts or CIDR addresses, eg. localhost, 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16", "API_EmbedSafePorts": "Safe Ports", "API_EmbedSafePorts_Description": "Comma-separated list of ports allowed for previewing.", + "API_Embed_UserAgent": "Embed Request User Agent", + "API_EmbedCacheExpirationDays": "Embed Cache Expiration Days", "API_Enable_CORS": "Enable CORS", "API_Enable_Direct_Message_History_EndPoint": "Enable Direct Message History Endpoint", "API_Enable_Direct_Message_History_EndPoint_Description": "This enables the `/api/v1/im.history.others` which allows the viewing of direct messages sent by other users that the caller is not part of.", @@ -646,16 +644,6 @@ "Auto_Translate": "Auto-Translate", "auto-translate": "Auto Translate", "auto-translate_description": "Permission to use the auto translate tool", - "AutoLinker": "AutoLinker", - "AutoLinker_Email": "AutoLinker Email", - "AutoLinker_Phone": "AutoLinker Phone", - "AutoLinker_Phone_Description": "Automatically linked for Phone numbers. e.g. `(123)456-7890`", - "AutoLinker_StripPrefix": "AutoLinker Strip Prefix", - "AutoLinker_StripPrefix_Description": "Short display. e.g. https://rocket.chat => rocket.chat", - "AutoLinker_Urls_Scheme": "AutoLinker Scheme:// URLs", - "AutoLinker_Urls_TLD": "AutoLinker TLD URLs", - "AutoLinker_Urls_www": "AutoLinker 'www' URLs", - "AutoLinker_UrlsRegExp": "AutoLinker URL Regular Expression", "Automatic_Translation": "Automatic Translation", "AutoTranslate": "Auto-Translate", "AutoTranslate_APIKey": "API Key", @@ -1786,7 +1774,6 @@ "EmojiCustomFilesystem_Description": "Specify how emojis are stored.", "Empty_no_agent_selected": "Empty, no agent selected", "Empty_title": "Empty title", - "Use_Legacy_Message_Template": "Use legacy message template", "Enable": "Enable", "Enable_Auto_Away": "Enable Auto Away", "Enable_CSP": "Enable Content-Security-Policy", @@ -3148,16 +3135,6 @@ "Mark_as_unread": "Mark As Unread", "Mark_read": "Mark Read", "Mark_unread": "Mark Unread", - "Markdown_Headers": "Allow Markdown headers in messages", - "Markdown_Marked_Breaks": "Enable Marked Breaks", - "Markdown_Marked_GFM": "Enable Marked GFM", - "Markdown_Marked_Pedantic": "Enable Marked Pedantic", - "Markdown_Marked_SmartLists": "Enable Marked Smart Lists", - "Markdown_Marked_Smartypants": "Enable Marked Smartypants", - "Markdown_Marked_Tables": "Enable Marked Tables", - "Markdown_Parser": "Markdown Parser", - "Markdown_SupportSchemesForLink": "Markdown Support Schemes for Link", - "Markdown_SupportSchemesForLink_Description": "Comma-separated list of allowed schemes", "Marketplace": "Marketplace", "Marketplace_app_last_updated": "Last updated __lastUpdated__", "Marketplace_view_marketplace": "View Marketplace", @@ -3211,15 +3188,12 @@ "Message_AllowEditing_BlockEditInMinutesDescription": "Enter 0 to disable blocking.", "Message_AllowPinning": "Allow Message Pinning", "Message_AllowPinning_Description": "Allow messages to be pinned to any of the channels.", - "Message_AllowSnippeting": "Allow Message Snippeting", "Message_AllowStarring": "Allow Message Starring", "Message_AllowUnrecognizedSlashCommand": "Allow Unrecognized Slash Commands", "Message_Already_Sent": "This message has already been sent and is being processed by the server", "Message_AlwaysSearchRegExp": "Always Search Using RegExp", "Message_AlwaysSearchRegExp_Description": "We recommend to set `True` if your language is not supported on <a target=\"_blank\" href=\"https://docs.mongodb.org/manual/reference/text-search-languages/#text-search-languages\">MongoDB text search</a>.", "Message_Attachments": "Message Attachments", - "Message_Attachments_GroupAttach": "Group Attachment Buttons", - "Message_Attachments_GroupAttachDescription": "This groups the icons under an expandable menu. Takes up less screen space.", "Message_Attachments_Thumbnails_Enabled": "Enable image thumbnails to save bandwith", "Message_Attachments_Thumbnails_Width": "Thumbnail's max width (in pixels)", "Message_Attachments_Thumbnails_Height": "Thumbnail's max height (in pixels)", @@ -3313,8 +3287,6 @@ "Message_is_removed": "message removed", "Message_sent_by_email": "Message sent by Email", "Message_ShowDeletedStatus": "Show Deleted Status", - "Message_ShowEditedStatus": "Show Edited Status", - "Message_ShowFormattingTips": "Show Formatting Tips", "Message_Formatting_Toolbox": "Formatting Toolbox", "Message_composer_toolbox_primary_actions": "Composer Primary Actions", "Message_composer_toolbox_secondary_actions": "Composer Secondary Actions", @@ -4476,10 +4448,7 @@ "SMTP_Test_Button": "Test SMTP Settings", "SMTP_Username": "SMTP Username", "Snippet_Added": "Created on %s", - "Snippet_Messages": "Snippet Messages", "Snippet_name": "Snippet name", - "snippet-message": "Snippet Message", - "snippet-message_description": "Permission to create snippet message", "Snippeted_a_message": "Created a snippet __snippetLink__", "Social_Network": "Social Network", "Some_ideas_to_get_you_started": "Some ideas to get you started", diff --git a/apps/meteor/server/importPackages.ts b/apps/meteor/server/importPackages.ts index ea3a350d342ffb4762a89591a16465fdb70a1adf..c51a5ade1732475dee63676216617f9f041f3a92 100644 --- a/apps/meteor/server/importPackages.ts +++ b/apps/meteor/server/importPackages.ts @@ -6,7 +6,6 @@ import '../app/api/server'; import '../app/apple/server'; import '../app/assets/server'; import '../app/authorization'; -import '../app/autolinker/server'; import '../app/autotranslate/server'; import '../app/bot-helpers/server'; import '../app/cas/server'; @@ -39,7 +38,6 @@ import '../app/importer-slack/server'; import '../app/importer-slack-users/server'; import '../app/integrations/server'; import '../app/irc'; -import '../app/issuelinks/server'; import '../app/katex/server'; import '../app/lib/server'; import '../app/livestream/server'; @@ -51,7 +49,6 @@ import '../app/markdown/server'; import '../app/mentions/server'; import '../app/message-mark-as-unread/server'; import '../app/message-pin/server'; -import '../app/message-snippet/server'; import '../app/message-star/server'; import '../app/nextcloud/server'; import '../app/oauth2-server-config/server'; diff --git a/apps/meteor/server/methods/loadMissedMessages.js b/apps/meteor/server/methods/loadMissedMessages.js index 0b00ff8d6c83f1a00167f31f59c08e9b07e6a5b4..e9c829976fbbeaf6d80e0f8f4497f2b5637d8ae5 100644 --- a/apps/meteor/server/methods/loadMissedMessages.js +++ b/apps/meteor/server/methods/loadMissedMessages.js @@ -3,7 +3,6 @@ import { check } from 'meteor/check'; import { canAccessRoomId } from '../../app/authorization/server'; import { Messages } from '../../app/models/server'; -import { settings } from '../../app/settings/server'; Meteor.methods({ loadMissedMessages(rid, start) { @@ -26,12 +25,6 @@ Meteor.methods({ }, }; - if (!settings.get('Message_ShowEditedStatus')) { - options.fields = { - editedAt: 0, - }; - } - return Messages.findVisibleByRoomIdAfterTimestamp(rid, start, options).fetch(); }, }); diff --git a/apps/meteor/server/methods/loadNextMessages.js b/apps/meteor/server/methods/loadNextMessages.js index affd9ef42316abd312a879963d97e5ea9eacc2f8..d83e308f83907740bf734fbbec710bb82273e8d3 100644 --- a/apps/meteor/server/methods/loadNextMessages.js +++ b/apps/meteor/server/methods/loadNextMessages.js @@ -3,7 +3,6 @@ import { check } from 'meteor/check'; import { canAccessRoomId } from '../../app/authorization/server'; import { Messages } from '../../app/models/server'; -import { settings } from '../../app/settings/server'; import { normalizeMessagesForUser } from '../../app/utils/server/lib/normalizeMessagesForUser'; Meteor.methods({ @@ -34,12 +33,6 @@ Meteor.methods({ limit, }; - if (!settings.get('Message_ShowEditedStatus')) { - options.fields = { - editedAt: 0, - }; - } - let records; if (end) { records = Messages.findVisibleByRoomIdAfterTimestamp(rid, end, options).fetch(); diff --git a/apps/meteor/server/methods/loadSurroundingMessages.js b/apps/meteor/server/methods/loadSurroundingMessages.js index 4fa92b0e79ac8d7e29a95536a496f22918f36baa..f0ea978735dbd3a22884d2c40b3f6a2dab09671e 100644 --- a/apps/meteor/server/methods/loadSurroundingMessages.js +++ b/apps/meteor/server/methods/loadSurroundingMessages.js @@ -3,7 +3,6 @@ import { check } from 'meteor/check'; import { canAccessRoomId } from '../../app/authorization/server'; import { Messages } from '../../app/models/server'; -import { settings } from '../../app/settings/server'; import { normalizeMessagesForUser } from '../../app/utils/server/lib/normalizeMessagesForUser'; Meteor.methods({ @@ -42,12 +41,6 @@ Meteor.methods({ limit: Math.ceil(limit / 2), }; - if (!settings.get('Message_ShowEditedStatus')) { - options.fields = { - editedAt: 0, - }; - } - const messages = Messages.findVisibleByRoomIdBeforeTimestamp(message.rid, message.ts, options).fetch(); const moreBefore = messages.length === options.limit; diff --git a/apps/meteor/server/methods/messageSearch.js b/apps/meteor/server/methods/messageSearch.js index 126b774fba629ff27cfdf54c92b7dd49b0bc25f6..fe5e650012a8602eb603537a0c0574a3d449e1c2 100644 --- a/apps/meteor/server/methods/messageSearch.js +++ b/apps/meteor/server/methods/messageSearch.js @@ -245,12 +245,6 @@ Meteor.methods({ }; } - if (!settings.get('Message_ShowEditedStatus')) { - options.projection = { - editedAt: 0, - }; - } - result.message.docs = Promise.await( Messages.find(query, { readPreference: readSecondaryPreferred(Messages.col.s.db), diff --git a/apps/meteor/server/models/raw/Messages.ts b/apps/meteor/server/models/raw/Messages.ts index fcd65df40493d9aa8bb7a1f0854f6b4f207f0e76..f0dcc66ab7efb6a09f90e47e9e5258be76b71397 100644 --- a/apps/meteor/server/models/raw/Messages.ts +++ b/apps/meteor/server/models/raw/Messages.ts @@ -64,16 +64,6 @@ export class MessagesRaw extends BaseRaw<IMessage> implements IMessagesModel { return this.findPaginated(query, options); } - findSnippetedByRoom(roomId: IRoom['_id'], options: FindOptions<IMessage>): FindPaginated<FindCursor<IMessage>> { - const query: Filter<IMessage> = { - _hidden: { $ne: true }, - snippeted: true, - rid: roomId, - }; - - return this.findPaginated(query, options); - } - // TODO: do we need this? currently not used anywhere findDiscussionsByRoom(rid: IRoom['_id'], options: FindOptions<IMessage>): FindCursor<IMessage> { const query: Filter<IMessage> = { rid, drid: { $exists: true } }; diff --git a/apps/meteor/server/startup/migrations/index.ts b/apps/meteor/server/startup/migrations/index.ts index 8fce9cd8568208eeec8a3f4ccb3cfc7fec6ad7fb..f43d9ea4cd5afa3d434f54b09b8c0b58c36047c1 100644 --- a/apps/meteor/server/startup/migrations/index.ts +++ b/apps/meteor/server/startup/migrations/index.ts @@ -45,4 +45,5 @@ import './v283'; import './v284'; import './v285'; import './v286'; +import './v287'; import './xrun'; diff --git a/apps/meteor/server/startup/migrations/v287.ts b/apps/meteor/server/startup/migrations/v287.ts new file mode 100644 index 0000000000000000000000000000000000000000..f1497ab82f3869c582f3d4e627662fdd8e9f61e1 --- /dev/null +++ b/apps/meteor/server/startup/migrations/v287.ts @@ -0,0 +1,62 @@ +import { Settings } from '@rocket.chat/models'; +import { MongoInternals } from 'meteor/mongo'; + +import { addMigration } from '../../lib/migrations'; +import { upsertPermissions } from '../../../app/authorization/server/functions/upsertPermissions'; + +addMigration({ + version: 287, + async up() { + const deprecatedSettings = [ + 'Markdown_Parser', + 'Markdown_Headers', + 'Markdown_SupportSchemesForLink', + 'Markdown_Marked_GFM', + 'Markdown_Marked_Tables', + 'Markdown_Marked_Breaks', + 'Markdown_Marked_Pedantic', + 'Markdown_Marked_SmartLists', + 'Markdown_Marked_Smartypants', + 'Message_AllowSnippeting', + 'Message_Attachments_GroupAttach', + 'Message_ShowEditedStatus', + 'Message_ShowFormattingTips', + 'Accounts_Default_User_Preferences_useLegacyMessageTemplate', + 'AutoLinker', + 'AutoLinker_StripPrefix', + 'AutoLinker_Urls_Scheme', + 'AutoLinker_Urls_www', + 'AutoLinker_Urls_TLD', + 'AutoLinker_UrlsRegExp', + 'AutoLinker_Email', + 'AutoLinker_Phone', + 'IssueLinks_Enabled', + 'IssueLinks_Template', + 'API_EmbedDisabledFor', + ]; + + await Settings.deleteMany({ + _id: { $in: deprecatedSettings }, + }); + + const { mongo } = MongoInternals.defaultRemoteCollectionDriver(); + const messages = mongo.db.collection('rocketchat_message'); + + await messages.updateMany( + { + snippeted: true, + }, + { + $unset: { + snippeted: 1, + snippetedBy: 1, + snippetedAt: 1, + snippetName: 1, + }, + }, + ); + await messages.dropIndex('snippeted_1'); + + await upsertPermissions(); + }, +}); diff --git a/apps/meteor/tests/end-to-end/api/00-miscellaneous.js b/apps/meteor/tests/end-to-end/api/00-miscellaneous.js index dc872b58bf5530bb6d661d3b5d214b9adb02354a..b0d829e9e0e7dfc50dcfe40b95fb62f2e93a041a 100644 --- a/apps/meteor/tests/end-to-end/api/00-miscellaneous.js +++ b/apps/meteor/tests/end-to-end/api/00-miscellaneous.js @@ -153,7 +153,6 @@ describe('miscellaneous', function () { 'desktopNotifications', 'pushNotifications', 'enableAutoAway', - 'useLegacyMessageTemplate', // 'highlights', 'desktopNotificationRequireInteraction', 'hideUsernames', diff --git a/apps/meteor/tests/end-to-end/api/05-chat.js b/apps/meteor/tests/end-to-end/api/05-chat.js index 601dcf30dbb498d73f0216e5c34955bb741c9e1f..c46f4913f2a624c88e45749391e20c5962416519 100644 --- a/apps/meteor/tests/end-to-end/api/05-chat.js +++ b/apps/meteor/tests/end-to-end/api/05-chat.js @@ -1988,111 +1988,6 @@ describe('[Chat]', function () { }); }); - describe('[/chat.getSnippetedMessageById]', () => { - it('should return an error when the snippeted messages is disabled', (done) => { - updateSetting('Message_AllowSnippeting', false).then(() => { - request - .get(api('chat.getSnippetedMessageById?messageId=invalid-id')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(400) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body.error).to.be.equal('error-not-allowed'); - }) - .end(done); - }); - }); - it('should return an error when the required "messageId" parameter is not sent', (done) => { - updateSetting('Message_AllowSnippeting', true).then(() => { - request - .get(api('chat.getSnippetedMessageById')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(400) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body.errorType).to.be.equal('error-invalid-params'); - }) - .end(done); - }); - }); - }); - - describe('[/chat.getSnippetedMessages]', () => { - it('should return an error when the required "roomId" parameter is not sent', (done) => { - request - .get(api('chat.getSnippetedMessages')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(400) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body.errorType).to.be.equal('error-invalid-params'); - }) - .end(done); - }); - - it('should return an error when the roomId is invalid', (done) => { - request - .get(api('chat.getSnippetedMessages?roomId=invalid-room')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(400) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body.error).to.be.equal('error-not-allowed'); - }) - .end(done); - }); - - it('should return an error when the snippeted messages is disabled', (done) => { - updateSetting('Message_AllowSnippeting', false).then(() => { - request - .get(api('chat.getSnippetedMessages?roomId=invalid-room')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(400) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body.error).to.be.equal('error-not-allowed'); - }) - .end(done); - }); - }); - - it('should return the snippeted messages', (done) => { - updateSetting('Message_AllowSnippeting', true).then(() => { - request - .get(api('chat.getSnippetedMessages?roomId=GENERAL')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(200) - .expect((res) => { - expect(res.body).to.have.property('success', true); - expect(res.body.messages).to.be.an('array'); - expect(res.body).to.have.property('offset'); - expect(res.body).to.have.property('total'); - expect(res.body).to.have.property('count'); - }) - .end(done); - }); - }); - - it('should return an error when the messageId is invalid', (done) => { - request - .get(api('chat.getSnippetedMessageById?messageId=invalid-id')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(400) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body.error).to.be.equal('invalid-message'); - }) - .end(done); - }); - }); - describe('[/chat.getDiscussions]', () => { const messageText = 'Message to create discussion'; let testChannel; @@ -2237,19 +2132,6 @@ describe('[Chat]', function () { messageWords.forEach((text) => { filterDiscussionsByText(text); }); - - it('should return an error when the messageId is invalid', (done) => { - request - .get(api('chat.getSnippetedMessageById?messageId=invalid-id')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(400) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body.error).to.be.equal('invalid-message'); - }) - .end(done); - }); }); }); diff --git a/packages/model-typings/src/models/IMessagesModel.ts b/packages/model-typings/src/models/IMessagesModel.ts index fed76010e137e2e6d3d6310daea6a64bf26a3d22..d80f3757a3ff97738954206e4b02bccadd24a8fd 100644 --- a/packages/model-typings/src/models/IMessagesModel.ts +++ b/packages/model-typings/src/models/IMessagesModel.ts @@ -18,8 +18,6 @@ export interface IMessagesModel extends IBaseModel<IMessage> { options?: FindOptions<IMessage>, ): FindPaginated<FindCursor<IMessage>>; - findSnippetedByRoom(roomId: IRoom['_id'], options: FindOptions<IMessage>): FindPaginated<FindCursor<IMessage>>; - findDiscussionsByRoom(rid: IRoom['_id'], options: FindOptions<IMessage>): FindCursor<IMessage>; findDiscussionsByRoomAndText(rid: IRoom['_id'], text: string, options: FindOptions<IMessage>): FindPaginated<FindCursor<IMessage>>; diff --git a/packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts b/packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts index 1cd31f267d2fd0dee277610eb84f592cdd24b5df..a53ade45b89fa43aaaea55d255148d6c27b4e500 100644 --- a/packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts +++ b/packages/rest-typings/src/v1/users/UsersSetPreferenceParamsPOST.ts @@ -39,7 +39,6 @@ export type UsersSetPreferencesParamsPOST = { muteFocusedConversations?: boolean; dontAskAgainList?: Array<{ action: string; label: string }>; receiveLoginDetectionEmail?: boolean; - useLegacyMessageTemplate?: boolean; idleTimeLimit?: number; }; }; @@ -189,10 +188,6 @@ const UsersSetPreferencesParamsPostSchema = { }, nullable: true, }, - useLegacyMessageTemplate: { - type: 'boolean', - nullable: true, - }, receiveLoginDetectionEmail: { type: 'boolean', nullable: true,