@@ -244,7 +244,7 @@ export class RoomService {
244244 await stateService . persistStateEvent ( roomCreateEvent ) ;
245245
246246 const creatorMembershipEvent =
247- PersistentEventFactory . newEvent < 'm.room.member' > (
247+ await stateService . buildEvent < 'm.room.member' > (
248248 {
249249 type : 'm.room.member' ,
250250 content : { membership : 'join' } ,
@@ -259,13 +259,9 @@ export class RoomService {
259259 PersistentEventFactory . defaultRoomVersion ,
260260 ) ;
261261
262- await stateService . addAuthEvents ( creatorMembershipEvent ) ;
263-
264- await stateService . addPrevEvents ( creatorMembershipEvent ) ;
265-
266262 await stateService . persistStateEvent ( creatorMembershipEvent ) ;
267263
268- const roomNameEvent = PersistentEventFactory . newEvent < 'm.room.name' > (
264+ const roomNameEvent = await stateService . buildEvent < 'm.room.name' > (
269265 {
270266 type : 'm.room.name' ,
271267 content : { name : name } ,
@@ -280,14 +276,10 @@ export class RoomService {
280276 PersistentEventFactory . defaultRoomVersion ,
281277 ) ;
282278
283- await stateService . addAuthEvents ( roomNameEvent ) ;
284-
285- await stateService . addPrevEvents ( roomNameEvent ) ;
286-
287279 await stateService . persistStateEvent ( roomNameEvent ) ;
288280
289281 const powerLevelEvent =
290- PersistentEventFactory . newEvent < 'm.room.power_levels' > (
282+ await stateService . buildEvent < 'm.room.power_levels' > (
291283 {
292284 type : 'm.room.power_levels' ,
293285 content : {
@@ -314,13 +306,9 @@ export class RoomService {
314306 PersistentEventFactory . defaultRoomVersion ,
315307 ) ;
316308
317- await stateService . addAuthEvents ( powerLevelEvent ) ;
318-
319- await stateService . addPrevEvents ( powerLevelEvent ) ;
320-
321309 await stateService . persistStateEvent ( powerLevelEvent ) ;
322310
323- const joinRuleEvent = PersistentEventFactory . newEvent < 'm.room.join_rules' > (
311+ const joinRuleEvent = await stateService . buildEvent < 'm.room.join_rules' > (
324312 {
325313 type : 'm.room.join_rules' ,
326314 content : { join_rule : joinRule } ,
@@ -335,14 +323,10 @@ export class RoomService {
335323 PersistentEventFactory . defaultRoomVersion ,
336324 ) ;
337325
338- await stateService . addAuthEvents ( joinRuleEvent ) ;
339-
340- await stateService . addPrevEvents ( joinRuleEvent ) ;
341-
342326 await stateService . persistStateEvent ( joinRuleEvent ) ;
343327
344328 const canonicalAliasEvent =
345- PersistentEventFactory . newEvent < 'm.room.canonical_alias' > (
329+ await stateService . buildEvent < 'm.room.canonical_alias' > (
346330 {
347331 type : 'm.room.canonical_alias' ,
348332 content : {
@@ -360,10 +344,6 @@ export class RoomService {
360344 PersistentEventFactory . defaultRoomVersion ,
361345 ) ;
362346
363- await stateService . addAuthEvents ( canonicalAliasEvent ) ;
364-
365- await stateService . addPrevEvents ( canonicalAliasEvent ) ;
366-
367347 await stateService . persistStateEvent ( canonicalAliasEvent ) ;
368348
369349 return {
@@ -381,8 +361,9 @@ export class RoomService {
381361 if ( ! roomversion ) {
382362 throw new Error ( 'Room version not found' ) ;
383363 }
364+ const stateService = this . stateService ;
384365
385- const roomNameEvent = PersistentEventFactory . newEvent < 'm.room.name' > (
366+ const roomNameEvent = await stateService . buildEvent < 'm.room.name' > (
386367 {
387368 type : 'm.room.name' ,
388369 content : { name } ,
@@ -397,12 +378,6 @@ export class RoomService {
397378 roomversion ,
398379 ) ;
399380
400- const stateService = this . stateService ;
401-
402- await stateService . addAuthEvents ( roomNameEvent ) ;
403-
404- await stateService . addPrevEvents ( roomNameEvent ) ;
405-
406381 await stateService . persistStateEvent ( roomNameEvent ) ;
407382
408383 void this . federationService . sendEventToAllServersInRoom ( roomNameEvent ) ;
@@ -416,7 +391,7 @@ export class RoomService {
416391 throw new Error ( 'Room version not found while setting room topic' ) ;
417392 }
418393
419- const topicEvent = PersistentEventFactory . newEvent < 'm.room.topic' > (
394+ const topicEvent = await this . stateService . buildEvent < 'm.room.topic' > (
420395 {
421396 type : 'm.room.topic' ,
422397 content : { topic } ,
@@ -431,10 +406,6 @@ export class RoomService {
431406 roomVersion ,
432407 ) ;
433408
434- await this . stateService . addAuthEvents ( topicEvent ) ;
435- await this . stateService . addPrevEvents ( topicEvent ) ;
436- await this . stateService . signEvent ( topicEvent ) ;
437-
438409 await this . stateService . persistStateEvent ( topicEvent ) ;
439410
440411 void this . federationService . sendEventToAllServersInRoom ( topicEvent ) ;
@@ -552,7 +523,7 @@ export class RoomService {
552523 ts : Date . now ( ) ,
553524 } ) as PduForType < 'm.room.power_levels' > ;
554525
555- const event = PersistentEventFactory . newEvent < 'm.room.power_levels' > (
526+ const event = await this . stateService . buildEvent < 'm.room.power_levels' > (
556527 {
557528 type : 'm.room.power_levels' ,
558529 content : eventToSign . content ,
@@ -567,9 +538,6 @@ export class RoomService {
567538 PersistentEventFactory . defaultRoomVersion ,
568539 ) ;
569540
570- await this . stateService . addAuthEvents ( event ) ;
571- await this . stateService . addPrevEvents ( event ) ;
572- await this . stateService . signEvent ( event ) ;
573541 await this . stateService . persistStateEvent ( event ) ;
574542
575543 logger . info (
@@ -624,7 +592,7 @@ export class RoomService {
624592 ) ;
625593 }
626594
627- const leaveEvent = PersistentEventFactory . newEvent < 'm.room.member' > (
595+ const leaveEvent = await this . stateService . buildEvent < 'm.room.member' > (
628596 {
629597 type : 'm.room.member' ,
630598 content : { membership : 'leave' } ,
@@ -639,10 +607,6 @@ export class RoomService {
639607 roomInfo . room_version ,
640608 ) ;
641609
642- await this . stateService . addAuthEvents ( leaveEvent ) ;
643-
644- await this . stateService . addPrevEvents ( leaveEvent ) ;
645-
646610 await this . stateService . persistStateEvent ( leaveEvent ) ;
647611
648612 logger . info (
@@ -704,7 +668,7 @@ export class RoomService {
704668 kickedUserId ,
705669 ) ;
706670
707- const kickEvent = PersistentEventFactory . newEvent < 'm.room.member' > (
671+ const kickEvent = await this . stateService . buildEvent < 'm.room.member' > (
708672 {
709673 type : 'm.room.member' ,
710674 content : {
@@ -722,10 +686,6 @@ export class RoomService {
722686 roomInfo . room_version ,
723687 ) ;
724688
725- await this . stateService . addAuthEvents ( kickEvent ) ;
726-
727- await this . stateService . addPrevEvents ( kickEvent ) ;
728-
729689 await this . stateService . persistStateEvent ( kickEvent ) ;
730690
731691 logger . info (
@@ -788,7 +748,7 @@ export class RoomService {
788748 bannedUserId ,
789749 ) ;
790750
791- const banEvent = PersistentEventFactory . newEvent < 'm.room.member' > (
751+ const banEvent = await this . stateService . buildEvent < 'm.room.member' > (
792752 {
793753 type : 'm.room.member' ,
794754 content : {
@@ -806,10 +766,6 @@ export class RoomService {
806766 roomInfo . room_version ,
807767 ) ;
808768
809- await this . stateService . addAuthEvents ( banEvent ) ;
810-
811- await this . stateService . addPrevEvents ( banEvent ) ;
812-
813769 await this . stateService . persistStateEvent ( banEvent ) ;
814770
815771 logger . info (
@@ -844,7 +800,7 @@ export class RoomService {
844800 ) ;
845801 }
846802
847- const membershipEvent = PersistentEventFactory . newEvent < 'm.room.member' > (
803+ const membershipEvent = await stateService . buildEvent < 'm.room.member' > (
848804 {
849805 type : 'm.room.member' ,
850806 content : { membership : 'join' } ,
@@ -859,10 +815,6 @@ export class RoomService {
859815 PersistentEventFactory . defaultRoomVersion ,
860816 ) ;
861817
862- await stateService . addAuthEvents ( membershipEvent ) ;
863-
864- await stateService . addPrevEvents ( membershipEvent ) ;
865-
866818 await stateService . persistStateEvent ( membershipEvent ) ;
867819
868820 if ( membershipEvent . rejected ) {
@@ -1060,7 +1012,6 @@ export class RoomService {
10601012 ) : Promise < SignedEvent < PduForType < 'm.room.tombstone' > > > {
10611013 logger . debug ( `Marking room ${ roomId } as tombstone by ${ sender } ` ) ;
10621014 const serverName = this . configService . serverName ;
1063- const signingKey = await this . configService . getSigningKey ( ) ;
10641015
10651016 const room = await this . roomRepository . findOneById ( roomId ) ;
10661017 if ( ! room ) {
@@ -1110,32 +1061,26 @@ export class RoomService {
11101061 } ;
11111062 const prevEvents = latestEvent ? [ latestEvent . _id ] : [ ] ;
11121063
1113- const tombstoneEvent = roomTombstoneEvent ( {
1114- roomId,
1115- sender,
1116- body : reason ,
1117- replacementRoom : replacementRoomId ,
1118- auth_events : authEventsMap ,
1119- prev_events : prevEvents ,
1120- depth,
1121- origin : serverName ,
1122- } ) as PduForType < 'm.room.tombstone' > ;
1123-
1124- const signedEvent = await signEvent (
1125- tombstoneEvent ,
1126- Array . isArray ( signingKey ) ? signingKey [ 0 ] : signingKey ,
1127- serverName ,
1128- ) ;
1129-
1130- const event = PersistentEventFactory . createFromRawEvent (
1131- signedEvent ,
1064+ const event = await this . stateService . buildEvent < 'm.room.tombstone' > (
1065+ {
1066+ room_id : roomId ,
1067+ sender : sender ,
1068+ content : {
1069+ body : reason ,
1070+ replacement_room : replacementRoomId ,
1071+ } ,
1072+ auth_events : [ ...Object . values ( authEventsMap ) ] ,
1073+ prev_events : prevEvents ,
1074+ depth,
1075+ origin_server_ts : Date . now ( ) ,
1076+ unsigned : { age_ts : Date . now ( ) } ,
1077+ hashes : { sha256 : '' } ,
1078+ signatures : { } ,
1079+ type : 'm.room.tombstone' ,
1080+ } ,
11321081 PersistentEventFactory . defaultRoomVersion ,
11331082 ) ;
11341083
1135- this . stateService . addAuthEvents ( event ) ;
1136- this . stateService . addPrevEvents ( event ) ;
1137- this . stateService . signEvent ( event ) ;
1138-
11391084 const _stateId = await this . stateService . persistStateEvent ( event ) ;
11401085
11411086 await this . roomRepository . markRoomAsDeleted ( roomId , event . eventId ) ;
@@ -1144,7 +1089,12 @@ export class RoomService {
11441089
11451090 logger . info ( `Successfully marked room ${ roomId } as tombstone` ) ;
11461091
1147- return signedEvent ;
1092+ const { event : eventToReturn } = event ;
1093+
1094+ return {
1095+ ...eventToReturn ,
1096+ event_id : event . eventId ,
1097+ } ;
11481098 }
11491099
11501100 public async isRoomTombstoned ( roomId : string ) : Promise < boolean > {
@@ -1209,7 +1159,7 @@ export class RoomService {
12091159
12101160 clone . users [ userId ] = powerLevel ;
12111161
1212- const event = PersistentEventFactory . newEvent < 'm.room.power_levels' > (
1162+ const event = await this . stateService . buildEvent < 'm.room.power_levels' > (
12131163 {
12141164 type : 'm.room.power_levels' ,
12151165 content : clone ,
@@ -1224,10 +1174,6 @@ export class RoomService {
12241174 state . version ,
12251175 ) ;
12261176
1227- await this . stateService . addAuthEvents ( event ) ;
1228- await this . stateService . addPrevEvents ( event ) ;
1229- await this . stateService . signEvent ( event ) ;
1230-
12311177 await this . stateService . persistStateEvent ( event ) ;
12321178
12331179 void this . federationService . sendEventToAllServersInRoom ( event ) ;
0 commit comments