Skip to content

Commit 4c1889e

Browse files
committed
save m.room.encryption events
1 parent 2ba57af commit 4c1889e

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

packages/federation-sdk/src/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,13 @@ export type HomeserverEventSignatures = {
163163
last_active_ago?: number;
164164
origin?: string;
165165
};
166+
'homeserver.matrix.encryption': {
167+
event_id: EventID;
168+
event: PduForType<'m.room.encryption'>;
169+
room_id: string;
170+
sender: string;
171+
origin_server_ts: number;
172+
};
166173
'homeserver.matrix.encrypted': {
167174
event_id: EventID;
168175
event: PduForType<'m.room.encrypted'>;

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,15 @@ export class StagingAreaService {
308308
},
309309
});
310310
break;
311+
case event.event.type === 'm.room.encryption':
312+
this.eventEmitterService.emit('homeserver.matrix.encryption', {
313+
event_id: eventId,
314+
event: event.event,
315+
room_id: roomId,
316+
sender: event.event.sender,
317+
origin_server_ts: event.event.origin_server_ts,
318+
});
319+
break;
311320
case event.event.type === 'm.room.encrypted':
312321
this.eventEmitterService.emit('homeserver.matrix.encrypted', {
313322
event_id: eventId,

packages/room/src/types/v3-11.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,13 @@ const EncryptedContentSchema = BaseTimelineContentSchema.extend({
537537
.optional(),
538538
});
539539

540+
export const PduEncryptionEventContentSchema = z.object({
541+
algorithm: z
542+
.enum(['m.megolm.v1.aes-sha2'])
543+
.describe('The algorithm used to encrypt the content.'),
544+
ciphertext: z.string().describe('The encrypted content.'),
545+
});
546+
540547
export type PduMessageEventContent = z.infer<
541548
typeof PduMessageEventContentSchema
542549
>;
@@ -706,6 +713,12 @@ const EventPduTypeRoomEncrypted = z.object({
706713
content: EncryptedContentSchema,
707714
});
708715

716+
const EventPduTypeRoomEncryption = z.object({
717+
...PduNoContentTimelineEventSchema,
718+
type: z.literal('m.room.encryption'),
719+
content: PduEncryptionEventContentSchema,
720+
});
721+
709722
const EventPduTypeRoomMessage = z.object({
710723
...PduNoContentTimelineEventSchema,
711724
type: z.literal('m.room.message'),
@@ -749,6 +762,8 @@ export const PduStateEventSchema = z.discriminatedUnion('type', [
749762
EventPduTypeRoomServerAcl,
750763

751764
EventPduTypeRoomTombstone,
765+
766+
EventPduTypeRoomEncryption,
752767
]);
753768

754769
export const PduTimelineSchema = z.discriminatedUnion('type', [
@@ -774,6 +789,7 @@ export function isTimelineEventType(type: PduType) {
774789
return (
775790
type === 'm.room.message' ||
776791
type === 'm.room.encrypted' ||
792+
type === 'm.room.encryption' ||
777793
type === 'm.reaction' ||
778794
type === 'm.room.redaction'
779795
);

0 commit comments

Comments
 (0)