Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[IMPROVE] Update system messages' behavior in rooms #22018

Merged
merged 23 commits into from Jun 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
5c15a45
Add alert to system messages and displays them in the sidebar (last m…
matheusbsilva137 May 11, 2021
f8746ef
Update lastMessage on room setting's update and message deletions
matheusbsilva137 May 11, 2021
f9e9290
Add admin settings check before room alert and last message update
matheusbsilva137 May 12, 2021
744d1fd
Merge branch 'develop' into sys-messages-rooms-list
matheusbsilva137 May 12, 2021
eebdbd5
Update normalizeSidebarMessage.js
matheusbsilva137 May 12, 2021
c3a761d
Update imports order
matheusbsilva137 May 12, 2021
4150421
Merge branch 'develop' into sys-messages-rooms-list
matheusbsilva137 May 13, 2021
3f08d9a
Use MessageTypes object and add support to multiple languages
matheusbsilva137 May 14, 2021
4bfbefa
Merge branch 'sys-messages-rooms-list' of https://github.com/RocketCh…
matheusbsilva137 May 14, 2021
9b22cfb
Merge branch 'develop' into sys-messages-rooms-list
pierre-lehnen-rc May 17, 2021
23ef413
Use system setting value to define last visible message in room
matheusbsilva137 May 18, 2021
7f0d1c9
Merge branch 'sys-messages-rooms-list' of https://github.com/RocketCh…
matheusbsilva137 May 18, 2021
b3bc063
Merge branch 'develop' into sys-messages-rooms-list
sampaiodiego May 20, 2021
0fe0e08
Update condition to hide system messages
matheusbsilva137 May 20, 2021
de8dd12
Add check to hiddenSysMes array length (fix tests)
matheusbsilva137 May 20, 2021
7942891
Merge branch 'develop' into sys-messages-rooms-list
sampaiodiego May 21, 2021
03c6268
Add check to 'u' field in message extraData
matheusbsilva137 May 22, 2021
0820567
Merge branch 'develop' into sys-messages-rooms-list
matheusbsilva137 May 24, 2021
ada86eb
Fix tests (rearrange order)
matheusbsilva137 May 24, 2021
cc51e97
Add option to hide message_pinned system message type and fix tests
matheusbsilva137 May 24, 2021
4b8af85
Add translations
matheusbsilva137 May 24, 2021
681039b
Fix groups tests
matheusbsilva137 May 24, 2021
016231b
Merge branch 'develop' into sys-messages-rooms-list
pierre-lehnen-rc Jun 16, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/channel-settings/server/methods/saveRoomSettings.js
Expand Up @@ -332,6 +332,10 @@ Meteor.methods({
callbacks.run('afterSaveRoomSettings', room);
});

if (settings.hasOwnProperty('systemMessages')) {
Rooms.resetLastMessageById(rid);
}

return {
result: true,
rid: room._id,
Expand Down
8 changes: 8 additions & 0 deletions app/lib/lib/MessageTypes.js
Expand Up @@ -135,6 +135,11 @@ Meteor.startup(function() {
};
},
});
MessageTypes.registerType({
id: 'message_pinned',
system: true,
message: 'Pinned_a_message',
});
MessageTypes.registerType({
id: 'subscription-role-added',
system: true,
Expand Down Expand Up @@ -217,6 +222,9 @@ export const MessageTypesValues = [
}, {
key: 'mute_unmute',
i18nLabel: 'Message_HideType_mute_unmute',
}, {
key: 'message_pinned',
i18nLabel: 'Message_HideType_message_pinned',
}, {
key: 'r',
i18nLabel: 'Message_HideType_r',
Expand Down
1 change: 0 additions & 1 deletion app/message-pin/client/index.js
@@ -1,5 +1,4 @@
import './actionButton';
import './messageType';
import './pinMessage';
import './tabBar';
import './views/pinnedMessages.html';
Expand Down
11 changes: 0 additions & 11 deletions app/message-pin/client/messageType.js

This file was deleted.

19 changes: 16 additions & 3 deletions app/models/server/models/Messages.js
Expand Up @@ -3,6 +3,7 @@ import _ from 'underscore';

import { Base } from './_Base';
import Rooms from './Rooms';
import Subscriptions from './Subscriptions';
import { settings } from '../../../settings/server/functions/settings';

export class Messages extends Base {
Expand Down Expand Up @@ -476,11 +477,13 @@ export class Messages extends Base {
return this.find(query, options);
}

getLastVisibleMessageSentWithNoTypeByRoomId(rid, messageId) {
getLastVisibleMessageSentByRoomId(rid, messageId) {
const { sysMes } = Rooms.getHiddenSystemMessagesTypesById(rid);
const hiddenSysMes = sysMes || settings.get('Hide_System_Messages');
const query = {
rid,
_hidden: { $ne: true },
t: { $exists: false },
t: hiddenSysMes ? { $nin: hiddenSysMes } : undefined,
$or: [
{ tmid: { $exists: false } },
{ tshow: true },
Expand Down Expand Up @@ -738,7 +741,17 @@ export class Messages extends Base {
_.extend(record, extraData);

record._id = this.insertOrUpsert(record);
Rooms.incMsgCountById(roomId, 1);

const { sysMes } = Rooms.getHiddenSystemMessagesTypesById(roomId);
const hiddenSysMes = sysMes || settings.get('Hide_System_Messages');
if (hiddenSysMes.length && hiddenSysMes.includes(type)) {
Rooms.incMsgCountById(roomId, 1);
} else {
const byUser = extraData && extraData.u ? extraData.u._id : user._id;
Rooms.incMsgCountAndSetLastMessageById(roomId, 1, record.ts, settings.get('Store_Last_Message') && record);
Subscriptions.setAlertForRoomIdExcludingUserId(roomId, byUser);
}

return record;
}

Expand Down
6 changes: 5 additions & 1 deletion app/models/server/models/Rooms.js
Expand Up @@ -253,6 +253,10 @@ export class Rooms extends Base {
return this.find({ t: 'd', uids: { $size: 2, $in: [_id] } }, options);
}

getHiddenSystemMessagesTypesById(_id, options) {
return this.findOne({ _id }, { ...options, fields: { sysMes: 1 } });
}

setAllowReactingWhenReadOnlyById = function(_id, allowReacting) {
const query = {
_id,
Expand Down Expand Up @@ -967,7 +971,7 @@ export class Rooms extends Base {

resetLastMessageById(_id, messageId = undefined) {
const query = { _id };
const lastMessage = Messages.getLastVisibleMessageSentWithNoTypeByRoomId(_id, messageId);
const lastMessage = Messages.getLastVisibleMessageSentByRoomId(_id, messageId);

const update = lastMessage ? {
$set: {
Expand Down
10 changes: 10 additions & 0 deletions client/sidebar/RoomList/normalizeSidebarMessage.js
@@ -1,8 +1,18 @@
import { escapeHTML } from '@rocket.chat/string-helpers';
import { Meteor } from 'meteor/meteor';
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';

import { filterMarkdown } from '../../../app/markdown/lib/markdown';
import { MessageTypes } from '../../../app/ui-utils/lib/MessageTypes';

export const normalizeSidebarMessage = (message, t) => {
const messageType = MessageTypes.getType(message);
if (message.t && messageType) {
const data = (typeof messageType.data === 'function' && messageType.data(message)) || {};
const language = Meteor._localStorage.getItem('userLanguage');
return TAPi18n.__(messageType.message, data, language);
}

if (message.msg) {
return escapeHTML(filterMarkdown(message.msg));
}
Expand Down
1 change: 1 addition & 0 deletions packages/rocketchat-i18n/i18n/en.i18n.json
Expand Up @@ -2783,6 +2783,7 @@
"Message_has_been_unpinned": "Message has been unpinned",
"Message_has_been_unstarred": "Message has been unstarred",
"Message_HideType_au": "Hide \"User Added\" messages",
"Message_HideType_message_pinned": "Hide \"Pinned a message\" messages",
"Message_HideType_mute_unmute": "Hide \"User Muted / Unmuted\" messages",
"Message_HideType_r": "Hide \"Room Name Changed\" messages",
"Message_HideType_rm": "Hide \"Message Removed\" messages",
Expand Down
1 change: 1 addition & 0 deletions packages/rocketchat-i18n/i18n/pt-BR.i18n.json
Expand Up @@ -2317,6 +2317,7 @@
"Message_GroupingPeriod": "Período de Agrupamento (em segundos)",
"Message_GroupingPeriodDescription": "As mensagens serão agrupadas com as anteriores se pertencerem ao mesmo usuário e o tempo decorrido for menor do que o tempo em segundos informado.",
"Message_HideType_au": "Ocultar mensagens \"User Added\"",
"Message_HideType_message_pinned": "Ocultar mensagens \"Fixou uma mensagem\"",
"Message_HideType_mute_unmute": "Ocultar mensagens \"Usuário silenciado / não modificado\"",
"Message_HideType_ru": "Ocultar mensagens \"Usuário removido\"",
"Message_HideType_uj": "Ocultar mensagens de \"Aderir ao usuário\"",
Expand Down
1 change: 1 addition & 0 deletions packages/rocketchat-i18n/i18n/pt.i18n.json
Expand Up @@ -2051,6 +2051,7 @@
"Message_GroupingPeriod": "Período de Agrupamento (em segundos)",
"Message_GroupingPeriodDescription": "As mensagens serão agrupadas com as anteriores se pertencerem ao mesmo utilizador e o tempo decorrido for menor do que o tempo em segundos informado.",
"Message_HideType_au": "Ocultar mensagens \"User Added\"",
"Message_HideType_message_pinned": "Ocultar mensagens \"Fixou uma mensagem\"",
"Message_HideType_mute_unmute": "Ocultar mensagens \"utilizador silenciado / não modificado\"",
"Message_HideType_ru": "Ocultar mensagens \"utilizador removido\"",
"Message_HideType_uj": "Ocultar mensagens de \"Aderir ao utilizador\"",
Expand Down
10 changes: 10 additions & 0 deletions tests/end-to-end/api/02-channels.js
Expand Up @@ -68,6 +68,16 @@ describe('[Channels]', function() {
})
.end(done);
});
it('should hide message pins (system messages)', (done) => {
request.post(api('rooms.saveRoomSettings'))
.set(credentials)
.send({
rid: testChannel._id,
systemMessages: ['message_pinned'],
})
.expect(200)
.end(done);
});
it('should return channel basic structure', (done) => {
request.get(api('channels.info'))
.set(credentials)
Expand Down
10 changes: 10 additions & 0 deletions tests/end-to-end/api/03-groups.js
Expand Up @@ -60,6 +60,16 @@ describe('[Groups]', function() {
})
.end(done);
});
it('should hide message pins (system messages)', (done) => {
request.post(api('rooms.saveRoomSettings'))
.set(credentials)
.send({
rid: testGroup._id,
systemMessages: ['message_pinned'],
})
.expect(200)
.end(done);
});
it('should return group basic structure', (done) => {
request.get(api('groups.info'))
.set(credentials)
Expand Down