From 26ca41f699f87589e169df3cf76b1abb92bd2ac1 Mon Sep 17 00:00:00 2001 From: Germain Souquet Date: Wed, 21 Jul 2021 17:26:41 +0200 Subject: [PATCH] Cache room member count on the messagePanel --- src/components/structures/MessagePanel.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/components/structures/MessagePanel.tsx b/src/components/structures/MessagePanel.tsx index c014585529..39ede68a75 100644 --- a/src/components/structures/MessagePanel.tsx +++ b/src/components/structures/MessagePanel.tsx @@ -236,6 +236,8 @@ export default class MessagePanel extends React.Component { // A map of private callEventGroupers = new Map(); + private membersCount = 0; + constructor(props, context) { super(props, context); @@ -256,11 +258,14 @@ export default class MessagePanel extends React.Component { } componentDidMount() { + this.calculateRoomMembersCount(); + this.props.room?.on("RoomState.members", this.calculateRoomMembersCount); this.isMounted = true; } componentWillUnmount() { this.isMounted = false; + this.props.room?.off("RoomState.members", this.calculateRoomMembersCount); SettingsStore.unwatchSetting(this.showTypingNotificationsWatcherRef); } @@ -274,6 +279,10 @@ export default class MessagePanel extends React.Component { } } + private calculateRoomMembersCount = (): void => { + this.membersCount = this.props.room?.getMembers().length || 0; + }; + private onShowTypingNotificationsChange = (): void => { this.setState({ showTypingNotifications: SettingsStore.getValue("showTypingNotifications"), @@ -711,9 +720,6 @@ export default class MessagePanel extends React.Component { isLastSuccessful = isLastSuccessful && mxEv.getSender() === MatrixClientPeg.get().getUserId(); const callEventGrouper = this.callEventGroupers.get(mxEv.getContent().call_id); - - const isDirectMessage = this.props.room?.getMembersCount() <= 2; - // use txnId as key if available so that we don't remount during sending ret.push( @@ -745,7 +751,7 @@ export default class MessagePanel extends React.Component { enableFlair={this.props.enableFlair} showReadReceipts={this.props.showReadReceipts} callEventGrouper={callEventGrouper} - hideSender={isDirectMessage && this.props.layout === Layout.Bubble} + hideSender={this.membersCount <= 2 && this.props.layout === Layout.Bubble} /> , );