Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
77292c2
createNavigationHistoryWithRoomIdMessageAndUser
sampaiodiego Mar 29, 2023
bf1a686
createWithTypeRoomIdMessageAndUser
sampaiodiego Mar 29, 2023
b7866e8
setSlackBotIdAndSlackTs
sampaiodiego Mar 29, 2023
ee35c36
updateOTRAck
sampaiodiego Mar 29, 2023
9ed9275
findByRoomId
sampaiodiego Mar 29, 2023
339e975
fix code check
sampaiodiego Mar 30, 2023
4768db6
createOtrSystemMessagesWithRoomIdAndUser
sampaiodiego Mar 30, 2023
1727048
use Message.saveSystemMessage only to create sys msgs
sampaiodiego Mar 30, 2023
e5416f7
migrate indexes from old model
sampaiodiego Mar 30, 2023
7da0d22
remove Meteor model
sampaiodiego Mar 30, 2023
c33d077
replace usage of old models
sampaiodiego Mar 30, 2023
d4502c2
findOneById
sampaiodiego Mar 30, 2023
ccb4b50
fix code check
sampaiodiego Mar 30, 2023
fb6af24
remove EE message models
sampaiodiego Mar 30, 2023
998bc10
Merge remote-tracking branch 'origin/develop' into use-messages-raw-p…
sampaiodiego Mar 30, 2023
2d68bf6
convert missing code using old model
sampaiodiego Mar 30, 2023
4772128
remove missing code using old model
sampaiodiego Mar 30, 2023
86d3c51
use service to create sys messages
sampaiodiego Mar 30, 2023
b632bf6
Merge remote-tracking branch 'origin/develop' into use-messages-raw-p…
sampaiodiego Mar 30, 2023
9b1cec6
fix quote
sampaiodiego Mar 30, 2023
c490178
Merge remote-tracking branch 'origin/develop' into use-messages-raw-p…
sampaiodiego Mar 30, 2023
9cec473
Merge remote-tracking branch 'origin/develop' into use-messages-raw-p…
sampaiodiego Mar 30, 2023
010605b
Merge remote-tracking branch 'origin/develop' into use-messages-raw-p…
sampaiodiego Mar 30, 2023
74221fc
add comment to omni sys msg
sampaiodiego Mar 30, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions apps/meteor/app/api/server/v1/autotranslate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import {
isAutotranslateTranslateMessageParamsPOST,
isAutotranslateGetSupportedLanguagesParamsGET,
} from '@rocket.chat/rest-typings';
import { Messages } from '@rocket.chat/models';

import { API } from '../api';
import { settings } from '../../../settings/server';
import { Messages } from '../../../models/server';

API.v1.addRoute(
'autotranslate.getSupportedLanguages',
Expand Down Expand Up @@ -82,7 +82,7 @@ API.v1.addRoute(
if (!messageId) {
return API.v1.failure('The bodyParam "messageId" is required.');
}
const message = Messages.findOneById(messageId);
const message = await Messages.findOneById(messageId);
if (!message) {
return API.v1.failure('Message not found.');
}
Expand Down
32 changes: 32 additions & 0 deletions apps/meteor/app/api/server/v1/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check';
import { Messages, Users, Rooms, Subscriptions } from '@rocket.chat/models';
import { escapeRegExp } from '@rocket.chat/string-helpers';
import { Message } from '@rocket.chat/core-services';
import type { IMessage } from '@rocket.chat/core-typings';

import { roomAccessAttributes } from '../../../authorization/server';
Expand All @@ -15,6 +16,7 @@ import { findDiscussionsFromRoom, findMentionedMessages, findStarredMessages } f
import { executeSendMessage } from '../../../lib/server/methods/sendMessage';
import { getPaginationItems } from '../helpers/getPaginationItems';
import { canAccessRoomAsync, canAccessRoomIdAsync } from '../../../authorization/server/functions/canAccessRoom';
import { canSendMessageAsync } from '../../../authorization/server/functions/canSendMessage';

API.v1.addRoute(
'chat.delete',
Expand Down Expand Up @@ -780,3 +782,33 @@ API.v1.addRoute(
},
},
);

API.v1.addRoute(
'chat.otr',
{ authRequired: true },
{
async post() {
const { roomId, type: otrType } = this.bodyParams;

if (!roomId) {
throw new Meteor.Error('error-invalid-params', 'The required "roomId" query param is missing.');
}

if (!otrType) {
throw new Meteor.Error('error-invalid-params', 'The required "type" query param is missing.');
}

const { username, type } = this.user;

if (!username) {
throw new Meteor.Error('error-invalid-user', 'Invalid user');
}

await canSendMessageAsync(roomId, { uid: this.userId, username, type });

await Message.saveSystemMessage(otrType, roomId, username, { _id: this.userId, username });

return API.v1.success();
},
},
);
6 changes: 3 additions & 3 deletions apps/meteor/app/api/server/v1/commands.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Meteor } from 'meteor/meteor';
import { Random } from '@rocket.chat/random';
import objectPath from 'object-path';
import { Messages } from '@rocket.chat/models';

import { slashCommands } from '../../../utils/server';
import { Messages } from '../../../models/server';
import { canAccessRoomIdAsync } from '../../../authorization/server/functions/canAccessRoom';
import { API } from '../api';
import { getLoggedInUser } from '../helpers/getLoggedInUser';
Expand Down Expand Up @@ -203,7 +203,7 @@ API.v1.addRoute(

const params = body.params ? body.params : '';
if (typeof body.tmid === 'string') {
const thread = Messages.findOneById(body.tmid);
const thread = await Messages.findOneById(body.tmid);
if (!thread || thread.rid !== body.roomId) {
return API.v1.failure('Invalid thread.');
}
Expand Down Expand Up @@ -309,7 +309,7 @@ API.v1.addRoute(

const { params = '' } = body;
if (body.tmid) {
const thread = Messages.findOneById(body.tmid);
const thread = await Messages.findOneById(body.tmid);
if (!thread || thread.rid !== body.roomId) {
return API.v1.failure('Invalid thread.');
}
Expand Down
6 changes: 3 additions & 3 deletions apps/meteor/app/apps/server/bridges/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import type { IMessage } from '@rocket.chat/apps-engine/definition/messages';
import type { IUser } from '@rocket.chat/apps-engine/definition/users';
import type { IRoom } from '@rocket.chat/apps-engine/definition/rooms';
import { api } from '@rocket.chat/core-services';
import { Subscriptions } from '@rocket.chat/models';
import { Messages, Subscriptions } from '@rocket.chat/models';

import { Messages, Users } from '../../../models/server';
import { Users } from '../../../models/server';
import { updateMessage } from '../../../lib/server/functions/updateMessage';
import { executeSendMessage } from '../../../lib/server/methods/sendMessage';
import notifications from '../../../notifications/server/lib/Notifications';
Expand Down Expand Up @@ -41,7 +41,7 @@ export class AppMessageBridge extends MessageBridge {
throw new Error('Invalid editor assigned to the message for the update.');
}

if (!message.id || !Messages.findOneById(message.id)) {
if (!message.id || !(await Messages.findOneById(message.id))) {
throw new Error('A message must exist to update.');
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@ import { hasPermissionAsync } from './hasPermission';
import { getValue } from '../../../settings/server/raw';
import { Rooms } from '../../../models/server';

const elapsedTime = (ts: number): number => {
const dif = Date.now() - ts;
const elapsedTime = (ts: Date): number => {
const dif = Date.now() - ts.getTime();
return Math.round(dif / 1000 / 60);
};

export const canDeleteMessageAsync = async (uid: string, { u, rid, ts }: { u: IUser; rid: string; ts: number }): Promise<boolean> => {
export const canDeleteMessageAsync = async (
uid: string,
{ u, rid, ts }: { u: Pick<IUser, '_id' | 'username'>; rid: string; ts: Date },
): Promise<boolean> => {
const forceDelete = await hasPermissionAsync(uid, 'force-delete-message', rid);

if (forceDelete) {
Expand Down Expand Up @@ -42,7 +45,7 @@ export const canDeleteMessageAsync = async (uid: string, { u, rid, ts }: { u: IU
}
}

const room = await Rooms.findOneById(rid, { fields: { ro: 1, unmuted: 1 } });
const room = await Rooms.findOneById(rid, { projection: { ro: 1, unmuted: 1 } });
if (room.ro === true && !(await hasPermissionAsync(uid, 'post-readonly', rid))) {
// Unless the user was manually unmuted
if (!(room.unmuted || []).includes(u.username)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { Match } from 'meteor/check';
import { Messages, Rooms } from '@rocket.chat/models';

import { settings } from '../../../settings/server';
import { Rooms } from '@rocket.chat/models';
import { Message } from '@rocket.chat/core-services';

export const saveReactWhenReadOnly = async function (
rid: string,
Expand All @@ -23,7 +22,7 @@ export const saveReactWhenReadOnly = async function (

if (result && sendMessage) {
const type = allowReact ? 'room-allowed-reacting' : 'room-disallowed-reacting';
await Messages.createWithTypeRoomIdMessageUserAndUnread(type, rid, '', user, settings.get('Message_Read_Receipt_Enabled'));

await Message.saveSystemMessage(type, rid, '', user);
}
return result;
};
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { Match } from 'meteor/check';
import { Messages, Rooms } from '@rocket.chat/models';

import { settings } from '../../../settings/server';
import { Rooms } from '@rocket.chat/models';
import { Message } from '@rocket.chat/core-services';

export const saveRoomAnnouncement = async function (rid, roomAnnouncement, user, sendMessage = true) {
if (!Match.test(rid, String)) {
Expand All @@ -21,13 +20,7 @@ export const saveRoomAnnouncement = async function (rid, roomAnnouncement, user,

const updated = await Rooms.setAnnouncementById(rid, message, announcementDetails);
if (updated && sendMessage) {
await Messages.createWithTypeRoomIdMessageUserAndUnread(
'room_changed_announcement',
rid,
message,
user,
settings.get('Message_Read_Receipt_Enabled'),
);
await Message.saveSystemMessage('room_changed_announcement', rid, message, user);
}

return updated;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { Match } from 'meteor/check';
import { Messages, Rooms } from '@rocket.chat/models';

import { settings } from '../../../settings/server';
import { Rooms } from '@rocket.chat/models';
import { Message } from '@rocket.chat/core-services';

export const saveRoomDescription = async function (rid, roomDescription, user) {
if (!Match.test(rid, String)) {
Expand All @@ -12,12 +11,6 @@ export const saveRoomDescription = async function (rid, roomDescription, user) {
}

const update = await Rooms.setDescriptionById(rid, roomDescription);
await Messages.createWithTypeRoomIdMessageUserAndUnread(
'room_changed_description',
rid,
roomDescription,
user,
settings.get('Message_Read_Receipt_Enabled'),
);
await Message.saveSystemMessage('room_changed_description', rid, roomDescription, user);
return update;
};
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ import { Match } from 'meteor/check';
import type { UpdateResult } from 'mongodb';
import type { IUser } from '@rocket.chat/core-typings';
import { isRegisterUser } from '@rocket.chat/core-typings';
import { Messages, Rooms } from '@rocket.chat/models';

import { settings } from '../../../settings/server';
import { Rooms } from '@rocket.chat/models';
import { Message } from '@rocket.chat/core-services';

export const saveRoomEncrypted = async function (rid: string, encrypted: boolean, user: IUser, sendMessage = true): Promise<UpdateResult> {
if (!Match.test(rid, String)) {
Expand All @@ -24,7 +23,7 @@ export const saveRoomEncrypted = async function (rid: string, encrypted: boolean
if (update && sendMessage) {
const type = encrypted ? 'room_e2e_enabled' : 'room_e2e_disabled';

await Messages.createWithTypeRoomIdMessageUserAndUnread(type, rid, user.username, user, settings.get('Message_Read_Receipt_Enabled'));
await Message.saveSystemMessage(type, rid, user.username, user);
}
return update;
};
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Meteor } from 'meteor/meteor';
import { Integrations, Messages, Rooms, Subscriptions } from '@rocket.chat/models';
import { Integrations, Rooms, Subscriptions } from '@rocket.chat/models';
import { isRoomFederated } from '@rocket.chat/core-typings';
import { Message } from '@rocket.chat/core-services';

import { settings } from '../../../settings/server';
import { getValidRoomName } from '../../../utils/server';
import { callbacks } from '../../../../lib/callbacks';
import { checkUsernameAvailability } from '../../../lib/server/functions/checkUsernameAvailability';
Expand Down Expand Up @@ -54,7 +54,7 @@ export async function saveRoomName(rid, displayName, user, sendMessage = true) {

await Integrations.updateRoomName(room.name, displayName);
if (sendMessage) {
await Messages.createWithTypeRoomIdMessageUserAndUnread('r', rid, displayName, user, settings.get('Message_Read_Receipt_Enabled'));
await Message.saveSystemMessage('r', rid, displayName, user);
}
callbacks.run('afterRoomNameChange', { rid, name: displayName, oldName: room.name });
return displayName;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { Meteor } from 'meteor/meteor';
import { Match } from 'meteor/check';
import { Rooms, Messages } from '@rocket.chat/models';
import { Rooms } from '@rocket.chat/models';
import type { IUser } from '@rocket.chat/core-typings';

import { settings } from '../../../settings/server';
import { Message } from '@rocket.chat/core-services';

export async function saveRoomReadOnly(
rid: string,
Expand All @@ -21,21 +20,9 @@ export async function saveRoomReadOnly(

if (result && sendMessage) {
if (readOnly) {
await Messages.createWithTypeRoomIdMessageUserAndUnread(
'room-set-read-only',
rid,
'',
user,
settings.get('Message_Read_Receipt_Enabled'),
);
await Message.saveSystemMessage('room-set-read-only', rid, '', user);
} else {
await Messages.createWithTypeRoomIdMessageUserAndUnread(
'room-removed-read-only',
rid,
'',
user,
settings.get('Message_Read_Receipt_Enabled'),
);
await Message.saveSystemMessage('room-removed-read-only', rid, '', user);
}
}
return result;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Meteor } from 'meteor/meteor';
import { Match } from 'meteor/check';
import { Messages, Rooms } from '@rocket.chat/models';
import { Rooms } from '@rocket.chat/models';
import { Message } from '@rocket.chat/core-services';

import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings/server';

export const saveRoomTopic = async function (
rid: string,
Expand All @@ -22,13 +22,7 @@ export const saveRoomTopic = async function (

const update = await Rooms.setTopicById(rid, roomTopic);
if (update && sendMessage) {
await Messages.createWithTypeRoomIdMessageUserAndUnread(
'room_changed_topic',
rid,
roomTopic || '',
user,
settings.get('Message_Read_Receipt_Enabled'),
);
await Message.saveSystemMessage('room_changed_topic', rid, roomTopic || '', user);
}
callbacks.run('afterRoomTopicChange', { rid, topic: roomTopic });
return update;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { Meteor } from 'meteor/meteor';
import { Match } from 'meteor/check';
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { Messages, Rooms, Subscriptions } from '@rocket.chat/models';
import { Rooms, Subscriptions } from '@rocket.chat/models';
import { Message } from '@rocket.chat/core-services';

import { settings } from '../../../settings/server';
import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator';
Expand Down Expand Up @@ -49,13 +50,7 @@ export const saveRoomType = async function (rid, roomType, user, sendMessage = t
lng: (user && user.language) || settings.get('Language') || 'en',
});
}
await Messages.createWithTypeRoomIdMessageUserAndUnread(
'room_changed_privacy',
rid,
message,
user,
settings.get('Message_Read_Receipt_Enabled'),
);
await Message.saveSystemMessage('room_changed_privacy', rid, message, user);
}
return result;
};
Loading