Skip to content

Commit d57694f

Browse files
committed
feat: enhance event emission with detailed event data
1 parent f5addb9 commit d57694f

File tree

4 files changed

+33
-13
lines changed

4 files changed

+33
-13
lines changed

packages/federation-sdk/src/index.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Membership, MessageType } from '@rocket.chat/federation-core';
2-
import type { EventID } from '@rocket.chat/federation-room';
2+
import type { EventID, PduForType } from '@rocket.chat/federation-room';
33
import { container } from 'tsyringe';
44
import { ConfigService } from './services/config.service';
55
import { EduService } from './services/edu.service';
@@ -125,6 +125,8 @@ export type HomeserverEventSignatures = {
125125
};
126126
'homeserver.matrix.message': {
127127
event_id: EventID;
128+
event: PduForType<'m.room.message'>;
129+
128130
room_id: string;
129131
sender: string;
130132
origin_server_ts: number;
@@ -199,19 +201,10 @@ export type HomeserverEventSignatures = {
199201
};
200202
};
201203
};
202-
'homeserver.matrix.accept-invite': {
203-
event_id: EventID;
204-
room_id: string;
205-
sender: string;
206-
origin_server_ts: number;
207-
content: {
208-
avatar_url: string | null;
209-
displayname: string;
210-
membership: Membership;
211-
};
212-
};
213204
'homeserver.matrix.reaction': {
214205
event_id: EventID;
206+
event: PduForType<'m.reaction'>;
207+
215208
room_id: string;
216209
sender: string;
217210
origin_server_ts: number;
@@ -225,6 +218,8 @@ export type HomeserverEventSignatures = {
225218
};
226219
'homeserver.matrix.redaction': {
227220
event_id: EventID;
221+
event: PduForType<'m.room.redaction'>;
222+
228223
room_id: string;
229224
sender: string;
230225
origin_server_ts: number;
@@ -235,6 +230,8 @@ export type HomeserverEventSignatures = {
235230
};
236231
'homeserver.matrix.membership': {
237232
event_id: EventID;
233+
event: PduForType<'m.room.member'>;
234+
238235
room_id: string;
239236
sender: string;
240237
state_key: string;
@@ -247,15 +244,24 @@ export type HomeserverEventSignatures = {
247244
};
248245
};
249246
'homeserver.matrix.room.name': {
247+
event_id: EventID;
248+
event: PduForType<'m.room.name'>;
250249
room_id: string; // name of the room being changed
251250
user_id: string; // user who changed the name
252251
name: string; // new name of the room
253252
};
254253
'homeserver.matrix.room.topic': {
254+
event_id: EventID;
255+
event: PduForType<'m.room.topic'>;
256+
255257
room_id: string; // topic of the room being changed
256258
user_id: string; // user who changed the topic
257259
topic: string; // new topic of the room
258260
};
261+
'homeserver.matrix.room.power_levels': {
262+
event_id: EventID;
263+
event: PduForType<'m.room.power_levels'>;
264+
};
259265
'homeserver.matrix.room.role': {
260266
sender_id: string; // who changed
261267
user_id: string; // whose changed

packages/federation-sdk/src/services/room.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,11 +820,12 @@ export class RoomService {
820820
await stateService.persistStateEvent(membershipEvent);
821821

822822
this.eventEmitterService.emit('homeserver.matrix.membership', {
823+
event_id: membershipEvent.eventId,
824+
event: membershipEvent.event,
823825
room_id: roomId,
824826
state_key: userId,
825827
content: { membership: 'join' },
826828
sender: userId,
827-
event_id: membershipEvent.eventId,
828829
origin_server_ts: Date.now(),
829830
});
830831

packages/federation-sdk/src/services/send-join.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ export class SendJoinService {
7373

7474
this.emitterService.emit('homeserver.matrix.membership', {
7575
event_id: eventId,
76+
event: signedJoinEvent.event,
7677
room_id: roomId,
7778
sender: signedJoinEvent.sender,
7879
state_key: signedJoinEvent.event.state_key,

packages/federation-sdk/src/services/staging-area.service.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ export class StagingAreaService {
177177
case event.event.type === 'm.room.message':
178178
this.eventEmitterService.emit('homeserver.matrix.message', {
179179
event_id: eventId,
180+
event: event.event,
180181
room_id: roomId,
181182
sender: event.event.sender,
182183
origin_server_ts: event.event.origin_server_ts,
@@ -210,6 +211,7 @@ export class StagingAreaService {
210211
case event.event.type === 'm.reaction': {
211212
this.eventEmitterService.emit('homeserver.matrix.reaction', {
212213
event_id: eventId,
214+
event: event.event,
213215
room_id: roomId,
214216
sender: event.event.sender,
215217
origin_server_ts: event.event.origin_server_ts,
@@ -226,6 +228,7 @@ export class StagingAreaService {
226228
case isRedactedEvent(event.event): {
227229
this.eventEmitterService.emit('homeserver.matrix.redaction', {
228230
event_id: eventId,
231+
event: event.event,
229232
room_id: roomId,
230233
sender: event.event.sender,
231234
origin_server_ts: event.event.origin_server_ts,
@@ -239,6 +242,7 @@ export class StagingAreaService {
239242
case event.event.type === 'm.room.member': {
240243
this.eventEmitterService.emit('homeserver.matrix.membership', {
241244
event_id: eventId,
245+
event: event.event,
242246
room_id: roomId,
243247
sender: event.event.sender,
244248
state_key: event.event.state_key as string,
@@ -254,6 +258,8 @@ export class StagingAreaService {
254258
}
255259
case event.event.type === 'm.room.name': {
256260
this.eventEmitterService.emit('homeserver.matrix.room.name', {
261+
event_id: eventId,
262+
event: event.event,
257263
room_id: roomId,
258264
user_id: event.event.sender,
259265
name: event.event.content?.name as string,
@@ -262,13 +268,19 @@ export class StagingAreaService {
262268
}
263269
case event.event.type === 'm.room.topic': {
264270
this.eventEmitterService.emit('homeserver.matrix.room.topic', {
271+
event_id: eventId,
272+
event: event.event,
265273
room_id: roomId,
266274
user_id: event.event.sender,
267275
topic: event.event.content?.topic as string,
268276
});
269277
break;
270278
}
271279
case event.event.type === 'm.room.power_levels': {
280+
this.eventEmitterService.emit('homeserver.matrix.room.power_levels', {
281+
event_id: eventId,
282+
event: event.event,
283+
});
272284
const getRole = (powerLevel: number) => {
273285
if (powerLevel === 100) {
274286
return 'owner';

0 commit comments

Comments
 (0)