Skip to content

Commit 0d2d849

Browse files
ggazzosampaiodiego
authored andcommitted
refactor: update event handling to use federationSDK's eventEmitterService and remove Emitter dependency
1 parent 742867f commit 0d2d849

File tree

8 files changed

+35
-56
lines changed

8 files changed

+35
-56
lines changed

ee/packages/federation-matrix/src/events/edu.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import { api } from '@rocket.chat/core-services';
22
import { UserStatus } from '@rocket.chat/core-typings';
3-
import type { Emitter } from '@rocket.chat/emitter';
4-
import { federationSDK, type HomeserverEventSignatures } from '@rocket.chat/federation-sdk';
3+
import { federationSDK } from '@rocket.chat/federation-sdk';
54
import { Logger } from '@rocket.chat/logger';
65
import { Rooms, Users } from '@rocket.chat/models';
76

87
const logger = new Logger('federation-matrix:edu');
98

10-
export const edus = async (emitter: Emitter<HomeserverEventSignatures>) => {
11-
emitter.on('homeserver.matrix.typing', async (data) => {
9+
export const edus = async () => {
10+
federationSDK.eventEmitterService.on('homeserver.matrix.typing', async (data) => {
1211
const config = federationSDK.getConfig('edu');
1312
if (!config.processTyping) {
1413
return;
@@ -31,7 +30,7 @@ export const edus = async (emitter: Emitter<HomeserverEventSignatures>) => {
3130
}
3231
});
3332

34-
emitter.on('homeserver.matrix.presence', async (data) => {
33+
federationSDK.eventEmitterService.on('homeserver.matrix.presence', async (data) => {
3534
const config = federationSDK.getConfig('edu');
3635
if (!config.processPresence) {
3736
return;
Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
1-
import type { Emitter } from '@rocket.chat/emitter';
2-
import { type HomeserverEventSignatures } from '@rocket.chat/federation-sdk';
3-
41
import { edus } from './edu';
52
import { member } from './member';
63
import { message } from './message';
74
import { ping } from './ping';
85
import { reaction } from './reaction';
96
import { room } from './room';
107

11-
export function registerEvents(emitter: Emitter<HomeserverEventSignatures>) {
12-
ping(emitter);
13-
message(emitter);
14-
reaction(emitter);
15-
member(emitter);
16-
edus(emitter);
17-
room(emitter);
8+
export function registerEvents() {
9+
ping();
10+
message();
11+
reaction();
12+
member();
13+
edus();
14+
room();
1815
}

ee/packages/federation-matrix/src/events/member.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { Room } from '@rocket.chat/core-services';
22
import type { IRoom, IUser, RoomType } from '@rocket.chat/core-typings';
3-
import type { Emitter } from '@rocket.chat/emitter';
4-
import type { HomeserverEventSignatures, PduForType } from '@rocket.chat/federation-sdk';
5-
import { federationSDK } from '@rocket.chat/federation-sdk';
3+
import { federationSDK, type HomeserverEventSignatures, type PduForType } from '@rocket.chat/federation-sdk';
64
import { Logger } from '@rocket.chat/logger';
75
import { Rooms, Subscriptions, Users } from '@rocket.chat/models';
86

@@ -228,8 +226,8 @@ async function handleLeave({
228226
// TODO check if there are no pending invites to the room, and if so, delete the room
229227
}
230228

231-
export function member(emitter: Emitter<HomeserverEventSignatures>) {
232-
emitter.on('homeserver.matrix.membership', async ({ event }) => {
229+
export function member() {
230+
federationSDK.eventEmitterService.on('homeserver.matrix.membership', async ({ event }) => {
233231
try {
234232
switch (event.content.membership) {
235233
case 'invite':

ee/packages/federation-matrix/src/events/message.ts

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
import { FederationMatrix, Message, MeteorService } from '@rocket.chat/core-services';
22
import type { IUser, IRoom, FileAttachmentProps } from '@rocket.chat/core-typings';
3-
import type { Emitter } from '@rocket.chat/emitter';
4-
import {
5-
type FileMessageType,
6-
type MessageType,
7-
type FileMessageContent,
8-
type HomeserverEventSignatures,
9-
type EventID,
10-
federationSDK,
11-
} from '@rocket.chat/federation-sdk';
3+
import { type FileMessageType, type MessageType, type FileMessageContent, type EventID, federationSDK } from '@rocket.chat/federation-sdk';
124
import { Logger } from '@rocket.chat/logger';
135
import { Users, Rooms, Messages } from '@rocket.chat/models';
146

@@ -118,8 +110,8 @@ async function handleMediaMessage(
118110
};
119111
}
120112

121-
export function message(emitter: Emitter<HomeserverEventSignatures>) {
122-
emitter.on('homeserver.matrix.message', async ({ event, event_id: eventId }) => {
113+
export function message() {
114+
federationSDK.eventEmitterService.on('homeserver.matrix.message', async ({ event, event_id: eventId }) => {
123115
try {
124116
const { msgtype, body } = event.content;
125117
const messageBody = body.toString();
@@ -258,6 +250,7 @@ export function message(emitter: Emitter<HomeserverEventSignatures>) {
258250
homeServerDomain: serverName,
259251
senderExternalId: event.sender,
260252
});
253+
261254
await Message.saveMessageFromFederation({
262255
fromId: user._id,
263256
rid: room._id,
@@ -271,7 +264,7 @@ export function message(emitter: Emitter<HomeserverEventSignatures>) {
271264
}
272265
});
273266

274-
emitter.on('homeserver.matrix.encrypted', async ({ event, event_id: eventId }) => {
267+
federationSDK.eventEmitterService.on('homeserver.matrix.encrypted', async ({ event, event_id: eventId }) => {
275268
try {
276269
if (!event.content.ciphertext) {
277270
logger.debug('No message content found in event');
@@ -385,7 +378,7 @@ export function message(emitter: Emitter<HomeserverEventSignatures>) {
385378
}
386379
});
387380

388-
emitter.on('homeserver.matrix.redaction', async ({ event }) => {
381+
federationSDK.eventEmitterService.on('homeserver.matrix.redaction', async ({ event }) => {
389382
try {
390383
const redactedEventId = event.redacts;
391384
if (!redactedEventId) {
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import type { Emitter } from '@rocket.chat/emitter';
2-
import type { HomeserverEventSignatures } from '@rocket.chat/federation-sdk';
1+
import { federationSDK } from '@rocket.chat/federation-sdk';
32

4-
export const ping = async (emitter: Emitter<HomeserverEventSignatures>) => {
5-
emitter.on('homeserver.ping', async (data) => {
3+
export const ping = async () => {
4+
federationSDK.eventEmitterService.on('homeserver.ping', async (data) => {
65
console.log('Message received from homeserver', data);
76
});
87
};

ee/packages/federation-matrix/src/events/reaction.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import { Message, FederationMatrix } from '@rocket.chat/core-services';
2-
import type { Emitter } from '@rocket.chat/emitter';
3-
import type { HomeserverEventSignatures } from '@rocket.chat/federation-sdk';
2+
import { federationSDK } from '@rocket.chat/federation-sdk';
43
import { Logger } from '@rocket.chat/logger';
54
import { Users, Messages } from '@rocket.chat/models'; // Rooms
65
import emojione from 'emojione';
76

87
const logger = new Logger('federation-matrix:reaction');
98

10-
export function reaction(emitter: Emitter<HomeserverEventSignatures>) {
11-
emitter.on('homeserver.matrix.reaction', async ({ event, event_id: eventId }) => {
9+
export function reaction() {
10+
federationSDK.eventEmitterService.on('homeserver.matrix.reaction', async ({ event, event_id: eventId }) => {
1211
try {
1312
const isSetReaction = event.content?.['m.relates_to'];
1413

@@ -47,7 +46,7 @@ export function reaction(emitter: Emitter<HomeserverEventSignatures>) {
4746
}
4847
});
4948

50-
emitter.on('homeserver.matrix.redaction', async ({ event }) => {
49+
federationSDK.eventEmitterService.on('homeserver.matrix.redaction', async ({ event }) => {
5150
try {
5251
const redactedEventId = event.redacts;
5352
if (!redactedEventId) {

ee/packages/federation-matrix/src/events/room.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import { Room } from '@rocket.chat/core-services';
2-
import type { Emitter } from '@rocket.chat/emitter';
3-
import { federationSDK, type HomeserverEventSignatures } from '@rocket.chat/federation-sdk';
2+
import { federationSDK } from '@rocket.chat/federation-sdk';
43
import { Rooms, Users } from '@rocket.chat/models';
54

65
import { getUsernameServername } from '../FederationMatrix';
76

8-
export function room(emitter: Emitter<HomeserverEventSignatures>) {
9-
emitter.on('homeserver.matrix.room.name', async ({ event }) => {
7+
export function room() {
8+
federationSDK.eventEmitterService.on('homeserver.matrix.room.name', async ({ event }) => {
109
const {
1110
room_id: roomId,
1211
content: { name },
@@ -15,18 +14,18 @@ export function room(emitter: Emitter<HomeserverEventSignatures>) {
1514

1615
const localRoomId = await Rooms.findOne({ 'federation.mrid': roomId }, { projection: { _id: 1 } });
1716
if (!localRoomId) {
18-
throw new Error('mapped room not found');
17+
throw new Error(`mapped room not found: ${roomId}`);
1918
}
2019

2120
const localUserId = await Users.findOneByUsername(userId, { projection: { _id: 1 } });
2221
if (!localUserId) {
23-
throw new Error('mapped user not found');
22+
throw new Error(`mapped user not found: ${userId}`);
2423
}
2524

2625
await Room.saveRoomName(localRoomId._id, localUserId._id, name);
2726
});
2827

29-
emitter.on('homeserver.matrix.room.topic', async ({ event }) => {
28+
federationSDK.eventEmitterService.on('homeserver.matrix.room.topic', async ({ event }) => {
3029
const {
3130
room_id: roomId,
3231
content: { topic },
@@ -51,7 +50,7 @@ export function room(emitter: Emitter<HomeserverEventSignatures>) {
5150
});
5251
});
5352

54-
emitter.on('homeserver.matrix.room.role', async (data) => {
53+
federationSDK.eventEmitterService.on('homeserver.matrix.room.role', async (data) => {
5554
const { room_id: roomId, user_id: userId, sender_id: senderId, role } = data;
5655

5756
const localRoomId = await Rooms.findOne({ 'federation.mrid': roomId }, { projection: { _id: 1 } });

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { Emitter } from '@rocket.chat/emitter';
2-
import type { HomeserverEventSignatures } from '@rocket.chat/federation-sdk';
31
import { federationSDK, init } from '@rocket.chat/federation-sdk';
42
import { Logger } from '@rocket.chat/logger';
53

@@ -101,15 +99,12 @@ export function configureFederationMatrixSettings(settings: {
10199
}
102100

103101
export async function setupFederationMatrix() {
104-
const eventHandler = new Emitter<HomeserverEventSignatures>();
105-
106102
await init({
107-
emitter: eventHandler,
108103
dbConfig: {
109104
uri: process.env.MONGO_URL || 'mongodb://localhost:3001/meteor',
110105
poolSize: Number.parseInt(process.env.DATABASE_POOL_SIZE || '10', 10),
111106
},
112107
});
113108

114-
registerEvents(eventHandler);
109+
registerEvents();
115110
}

0 commit comments

Comments
 (0)