Skip to content

Commit

Permalink
refactor(messenger-main): reduce unnecessary DOM elements by conditio…
Browse files Browse the repository at this point in the history
…nally rendering MembersSidekick to improve performance (#2755)
  • Loading branch information
domw30 authored Mar 7, 2025
1 parent 5d3fa75 commit 6b77863
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
12 changes: 12 additions & 0 deletions src/apps/messenger/Main.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { Container as Main, Properties } from './Main';
import { MessengerChat } from '../../components/messenger/chat';
import { MessengerFeed } from '../../components/messenger/feed';
import { JoiningConversationDialog } from '../../components/joining-conversation-dialog';
import { MembersSidekick } from '../../components/sidekick/variants/members-sidekick';

jest.mock('../../lib/web3/thirdweb/client', () => ({
getThirdWebClient: jest.fn(),
Expand All @@ -23,6 +24,7 @@ describe(Main, () => {
isSocialChannel: false,
isJoiningConversation: false,
isConversationsLoaded: true,
isSecondarySidekickOpen: false,
...props,
};

Expand Down Expand Up @@ -105,4 +107,14 @@ describe(Main, () => {

expect(wrapper).not.toHaveElement(MessengerFeed);
});

it('should render members sidekick when is secondary sidekick open', () => {
const wrapper = subject({
context: { isAuthenticated: true },
isSecondarySidekickOpen: true,
isConversationsLoaded: true,
});

expect(wrapper).toHaveElement(MembersSidekick);
});
});
5 changes: 4 additions & 1 deletion src/apps/messenger/Main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@ export interface Properties {
isSocialChannel: boolean;
isJoiningConversation: boolean;
isConversationsLoaded: boolean;
isSecondarySidekickOpen: boolean;
}

export class Container extends React.Component<Properties> {
static mapState(state: RootState): Partial<Properties> {
const {
chat: { activeConversationId, isJoiningConversation, isConversationsLoaded },
groupManagement: { isSecondarySidekickOpen },
} = state;

const currentChannel = denormalize(activeConversationId, state) || null;
Expand All @@ -37,6 +39,7 @@ export class Container extends React.Component<Properties> {
isSocialChannel: currentChannel?.isSocialChannel,
isJoiningConversation,
isConversationsLoaded,
isSecondarySidekickOpen,
};
}

Expand All @@ -57,7 +60,7 @@ export class Container extends React.Component<Properties> {
this.props.isValidConversation &&
(this.props.isSocialChannel ? <MessengerFeed /> : <MessengerChat />)}
</div>
{this.props.isConversationsLoaded && <MembersSidekick />}
{this.props.isConversationsLoaded && this.props.isSecondarySidekickOpen && <MembersSidekick />}

<FeatureFlag featureFlag='enableDevPanel'>
<DevPanelContainer />
Expand Down

0 comments on commit 6b77863

Please sign in to comment.