@@ -22,6 +22,7 @@ import { MatrixEvent } from 'matrix-js-sdk/src/models/event';
22
22
import { Relations } from "matrix-js-sdk/src/models/relations" ;
23
23
import { logger } from 'matrix-js-sdk/src/logger' ;
24
24
import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state" ;
25
+ import { throttle } from "lodash" ;
25
26
26
27
import shouldHideEvent from '../../shouldHideEvent' ;
27
28
import { wantsDateSeparator } from '../../DateUtils' ;
@@ -275,13 +276,13 @@ export default class MessagePanel extends React.Component<IProps, IState> {
275
276
276
277
componentDidMount ( ) {
277
278
this . calculateRoomMembersCount ( ) ;
278
- this . props . room ?. currentState . on ( RoomStateEvent . Members , this . calculateRoomMembersCount ) ;
279
+ this . props . room ?. currentState . on ( RoomStateEvent . Members , this . onRoomMembers ) ;
279
280
this . isMounted = true ;
280
281
}
281
282
282
283
componentWillUnmount ( ) {
283
284
this . isMounted = false ;
284
- this . props . room ?. currentState . off ( RoomStateEvent . Members , this . calculateRoomMembersCount ) ;
285
+ this . props . room ?. currentState . off ( RoomStateEvent . Members , this . onRoomMembers ) ;
285
286
SettingsStore . unwatchSetting ( this . showTypingNotificationsWatcherRef ) ;
286
287
}
287
288
@@ -312,11 +313,16 @@ export default class MessagePanel extends React.Component<IProps, IState> {
312
313
return this . props . room ?. getInvitedAndJoinedMemberCount ( ) <= 2 && this . props . layout === Layout . Bubble ;
313
314
}
314
315
315
- private calculateRoomMembersCount = ( ) : void => {
316
+ private onRoomMembers = ( event : MatrixEvent ) : void => {
317
+ if ( this . props . room && event . getRoomId ( ) !== this . props . room . roomId ) return ; // different room
318
+ this . calculateRoomMembersCount ( ) ;
319
+ } ;
320
+
321
+ private calculateRoomMembersCount = throttle ( ( ) : void => {
316
322
this . setState ( {
317
323
hideSender : this . shouldHideSender ( ) ,
318
324
} ) ;
319
- } ;
325
+ } , 200 , { leading : true , trailing : true } ) ;
320
326
321
327
private onShowTypingNotificationsChange = ( ) : void => {
322
328
this . setState ( {
0 commit comments