Skip to content

Commit ec81ab4

Browse files
ricardogarimggazzo
andauthored
fix(federation): delete message (#37112)
Co-authored-by: Guilherme Gazzo <guilherme@gazzo.xyz>
1 parent 3f22549 commit ec81ab4

File tree

7 files changed

+16
-25
lines changed

7 files changed

+16
-25
lines changed

apps/meteor/app/lib/server/functions/deleteMessage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export async function deleteMessage(message: IMessage, user: IUser): Promise<voi
3535
const showDeletedStatus = settings.get('Message_ShowDeletedStatus') || isThread;
3636
const bridges = Apps.self?.isLoaded() && Apps.getBridges();
3737

38-
const room = await Rooms.findOneById(message.rid, { projection: { lastMessage: 1, prid: 1, mid: 1, federated: 1 } });
38+
const room = await Rooms.findOneById(message.rid, { projection: { lastMessage: 1, prid: 1, mid: 1, federated: 1, federation: 1 } });
3939

4040
if (deletedMsg) {
4141
if (bridges) {

apps/meteor/ee/server/hooks/federation/index.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { FederationMatrix } from '@rocket.chat/core-services';
2-
import { isEditedMessage, isUserNativeFederated, type IMessage, type IRoom, type IUser } from '@rocket.chat/core-typings';
2+
import { isEditedMessage, type IMessage, type IRoom, type IUser } from '@rocket.chat/core-typings';
33
import { Rooms } from '@rocket.chat/models';
44

55
import { callbacks } from '../../../../lib/callbacks';
@@ -57,22 +57,13 @@ callbacks.add(
5757

5858
callbacks.add(
5959
'afterDeleteMessage',
60-
async (message: IMessage, { room, user }) => {
60+
async (message: IMessage, { room }) => {
6161
if (!message.federation?.eventId) {
6262
return;
6363
}
6464

65-
// removing messages from external users is not allowed
66-
// TODO should we make it work for external users?
67-
if (user.federated) {
68-
return;
69-
}
70-
71-
if (!isUserNativeFederated(user)) {
72-
return;
73-
}
7465
if (FederationActions.shouldPerformFederationAction(room)) {
75-
await FederationMatrix.deleteMessage(room.federation.mrid, message, user.federation.mui);
66+
await FederationMatrix.deleteMessage(room.federation.mrid, message);
7667
}
7768
},
7869
callbacks.priority.MEDIUM,

ee/apps/federation-service/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"@rocket.chat/core-typings": "workspace:*",
2626
"@rocket.chat/emitter": "^0.31.25",
2727
"@rocket.chat/federation-matrix": "workspace:^",
28-
"@rocket.chat/federation-sdk": "0.1.11",
28+
"@rocket.chat/federation-sdk": "0.1.13",
2929
"@rocket.chat/http-router": "workspace:*",
3030
"@rocket.chat/instance-status": "workspace:^",
3131
"@rocket.chat/license": "workspace:^",

ee/packages/federation-matrix/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"@rocket.chat/core-services": "workspace:^",
3939
"@rocket.chat/core-typings": "workspace:^",
4040
"@rocket.chat/emitter": "^0.31.25",
41-
"@rocket.chat/federation-sdk": "0.1.11",
41+
"@rocket.chat/federation-sdk": "0.1.13",
4242
"@rocket.chat/http-router": "workspace:^",
4343
"@rocket.chat/license": "workspace:^",
4444
"@rocket.chat/models": "workspace:^",

ee/packages/federation-matrix/src/FederationMatrix.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS
616616
};
617617
}
618618

619-
async deleteMessage(matrixRoomId: string, message: IMessage, uid: string): Promise<void> {
619+
async deleteMessage(matrixRoomId: string, message: IMessage): Promise<void> {
620620
try {
621621
if (!isMessageFromMatrixFederation(message) || isDeletedMessage(message)) {
622622
return;
@@ -634,7 +634,7 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS
634634

635635
// TODO fix branded EventID and remove type casting
636636
// TODO message.u?.username is not the user who removed the message
637-
const eventId = await this.homeserverServices.message.redactMessage(matrixRoomId, matrixEventId as EventID, uid);
637+
const eventId = await this.homeserverServices.message.redactMessage(matrixRoomId, matrixEventId as EventID);
638638

639639
this.logger.debug('Message Redaction sent to Matrix successfully:', eventId);
640640
} catch (error) {

packages/core-services/src/types/IFederationMatrixService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export interface IFederationMatrixService {
1010
ensureFederatedUsersExistLocally(members: string[]): Promise<void>;
1111
createDirectMessageRoom(room: IRoomFederated, members: IUser[], creatorId: IUser['_id']): Promise<void>;
1212
sendMessage(message: IMessage, room: IRoomFederated, user: IUser): Promise<void>;
13-
deleteMessage(matrixRoomId: string, message: IMessage, uid: string): Promise<void>;
13+
deleteMessage(matrixRoomId: string, message: IMessage): Promise<void>;
1414
sendReaction(messageId: string, reaction: string, user: IUser): Promise<void>;
1515
removeReaction(messageId: string, reaction: string, user: IUser, oldMessage: IMessage): Promise<void>;
1616
getEventById(eventId: string): Promise<any | null>;

yarn.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7543,7 +7543,7 @@ __metadata:
75437543
"@rocket.chat/core-typings": "workspace:^"
75447544
"@rocket.chat/emitter": "npm:^0.31.25"
75457545
"@rocket.chat/eslint-config": "workspace:^"
7546-
"@rocket.chat/federation-sdk": "npm:0.1.11"
7546+
"@rocket.chat/federation-sdk": "npm:0.1.13"
75477547
"@rocket.chat/http-router": "workspace:^"
75487548
"@rocket.chat/license": "workspace:^"
75497549
"@rocket.chat/models": "workspace:^"
@@ -7569,9 +7569,9 @@ __metadata:
75697569
languageName: unknown
75707570
linkType: soft
75717571

7572-
"@rocket.chat/federation-sdk@npm:0.1.11":
7573-
version: 0.1.11
7574-
resolution: "@rocket.chat/federation-sdk@npm:0.1.11"
7572+
"@rocket.chat/federation-sdk@npm:0.1.13":
7573+
version: 0.1.13
7574+
resolution: "@rocket.chat/federation-sdk@npm:0.1.13"
75757575
dependencies:
75767576
"@datastructures-js/priority-queue": "npm:^6.3.3"
75777577
"@noble/ed25519": "npm:^3.0.0"
@@ -7584,7 +7584,7 @@ __metadata:
75847584
zod: "npm:^3.22.4"
75857585
peerDependencies:
75867586
typescript: ~5.9.2
7587-
checksum: 10/f45d1d43e28033e3b20022cedbd5825967bbf85346cebc2d6600d490f306fd253713a95bc51ce571e90027087d96497349c694e72a2c2913319d08e1046b0c06
7587+
checksum: 10/05109707f0f17f8b9b3e93298dbf9083dc2c9250a8d4b8efc2bb4305d1a086717e07553485df27c5c7d8222f2f706bf0d91c97ac3b5df219883d4f43e6813dd4
75887588
languageName: node
75897589
linkType: hard
75907590

@@ -7597,7 +7597,7 @@ __metadata:
75977597
"@rocket.chat/core-typings": "workspace:*"
75987598
"@rocket.chat/emitter": "npm:^0.31.25"
75997599
"@rocket.chat/federation-matrix": "workspace:^"
7600-
"@rocket.chat/federation-sdk": "npm:0.1.11"
7600+
"@rocket.chat/federation-sdk": "npm:0.1.13"
76017601
"@rocket.chat/http-router": "workspace:*"
76027602
"@rocket.chat/instance-status": "workspace:^"
76037603
"@rocket.chat/license": "workspace:^"
@@ -9783,7 +9783,7 @@ __metadata:
97839783
peerDependencies:
97849784
"@rocket.chat/layout": "*"
97859785
"@rocket.chat/tools": 0.2.3
9786-
"@rocket.chat/ui-contexts": 23.0.0-rc.0
9786+
"@rocket.chat/ui-contexts": 23.0.0-rc.1
97879787
"@tanstack/react-query": "*"
97889788
react: "*"
97899789
react-hook-form: "*"

0 commit comments

Comments
 (0)