Skip to content

Commit 4de1699

Browse files
t3chguyturt2live
andauthored
Add new room state emit RoomStateEvent.Update for lower-frequency hits (#2192)
Co-authored-by: Travis Ralston <[email protected]>
1 parent 3d9221f commit 4de1699

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

src/client.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -799,7 +799,9 @@ type RoomEvents = RoomEvent.Name
799799

800800
type RoomStateEvents = RoomStateEvent.Events
801801
| RoomStateEvent.Members
802-
| RoomStateEvent.NewMember;
802+
| RoomStateEvent.NewMember
803+
| RoomStateEvent.Update
804+
;
803805

804806
type CryptoEvents = CryptoEvent.KeySignatureUploadFailure
805807
| CryptoEvent.KeyBackupStatus

src/models/room-state.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ export enum RoomStateEvent {
3838
Events = "RoomState.events",
3939
Members = "RoomState.members",
4040
NewMember = "RoomState.newMember",
41+
Update = "RoomState.update", // signals batches of updates without specificity
4142
}
4243

4344
export type RoomStateEventHandlerMap = {
4445
[RoomStateEvent.Events]: (event: MatrixEvent, state: RoomState, lastStateEvent: MatrixEvent | null) => void;
4546
[RoomStateEvent.Members]: (event: MatrixEvent, state: RoomState, member: RoomMember) => void;
4647
[RoomStateEvent.NewMember]: (event: MatrixEvent, state: RoomState, member: RoomMember) => void;
48+
[RoomStateEvent.Update]: (state: RoomState) => void;
4749
};
4850

4951
export class RoomState extends TypedEventEmitter<RoomStateEvent, RoomStateEventHandlerMap> {
@@ -376,6 +378,8 @@ export class RoomState extends TypedEventEmitter<RoomStateEvent, RoomStateEventH
376378
this.sentinels = {};
377379
}
378380
});
381+
382+
this.emit(RoomStateEvent.Update, this);
379383
}
380384

381385
/**
@@ -485,6 +489,7 @@ export class RoomState extends TypedEventEmitter<RoomStateEvent, RoomStateEventH
485489
logger.log(`LL: RoomState put in finished state ...`);
486490
this.oobMemberFlags.status = OobStatus.Finished;
487491
stateEvents.forEach((e) => this.setOutOfBandMember(e));
492+
this.emit(RoomStateEvent.Update, this);
488493
}
489494

490495
/**

src/sync.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ export class SyncApi {
240240
RoomStateEvent.Events,
241241
RoomStateEvent.Members,
242242
RoomStateEvent.NewMember,
243+
RoomStateEvent.Update,
243244
]);
244245
room.currentState.on(RoomStateEvent.NewMember, function(event, state, member) {
245246
member.user = client.getUser(member.userId);

0 commit comments

Comments
 (0)