From 5ee98fd33cae9623828c268ad93e2c8009a5ea44 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Sun, 22 Jan 2023 18:12:32 +0100 Subject: [PATCH] [Perf] Memoize some Menu Items --- src/components/left/NewChatButton.tsx | 14 +- src/components/left/main/LeftMainHeader.tsx | 202 ++++++++++---------- src/components/ui/Menu.tsx | 4 +- 3 files changed, 118 insertions(+), 102 deletions(-) diff --git a/src/components/left/NewChatButton.tsx b/src/components/left/NewChatButton.tsx index ff0aaae04..95abdca43 100644 --- a/src/components/left/NewChatButton.tsx +++ b/src/components/left/NewChatButton.tsx @@ -1,6 +1,6 @@ import type { FC } from '../../lib/teact/teact'; import React, { - useState, useEffect, memo, useCallback, + useState, useEffect, memo, useCallback, useMemo, } from '../../lib/teact/teact'; import buildClassName from '../../util/buildClassName'; @@ -49,6 +49,14 @@ const NewChatButton: FC = ({ setIsMenuOpen(false); }, []); + const menuItems = useMemo(() => ( + <> + {lang('NewChannel')} + {lang('NewGroup')} + {lang('NewMessageTitle')} + + ), [lang, onNewChannel, onNewGroup, onNewPrivateChat]); + return (
); diff --git a/src/components/left/main/LeftMainHeader.tsx b/src/components/left/main/LeftMainHeader.tsx index 614959a92..a6eadd6ac 100644 --- a/src/components/left/main/LeftMainHeader.tsx +++ b/src/components/left/main/LeftMainHeader.tsx @@ -266,6 +266,111 @@ const LeftMainHeader: FC = ({ handleDropdownMenuTransitionEnd, } = useLeftHeaderButtonRtlForumTransition(shouldHideSearch); + const menuItems = useMemo(() => ( + <> + + {lang('SavedMessages')} + + + {lang('ArchivedChats')} + {archivedUnreadChatsCount > 0 && ( +
{archivedUnreadChatsCount}
+ )} +
+ + {lang('Contacts')} + + + {lang('Settings')} + + + {lang('lng_menu_night_mode')} + + + + {lang('Appearance.Animations').toLowerCase()} + 0} + /> + + + {lang('TelegramFeatures')} + + + Report Bug + + {IS_BETA && ( + + Beta Changelog + + )} + {withOtherVersions && ( + <> + + Switch to K Version + + + Switch to Old Version + + + )} + {canInstall && ( + + Install App + + )} + + ), [ + animationLevel, archivedUnreadChatsCount, canInstall, handleAnimationLevelChange, handleBugReportClick, + handleChangelogClick, handleDarkModeToggle, handleOpenTipsChat, handleSelectSaved, handleSwitchToLegacy, + handleSwitchToWebK, lang, onSelectArchived, onSelectContacts, onSelectSettings, theme, withOtherVersions, + ]); + return (
@@ -281,102 +386,7 @@ const LeftMainHeader: FC = ({ positionX={shouldHideSearch && lang.isRtl ? 'right' : 'left'} onTransitionEnd={lang.isRtl ? handleDropdownMenuTransitionEnd : undefined} > - - {lang('SavedMessages')} - - - {lang('ArchivedChats')} - {archivedUnreadChatsCount > 0 && ( -
{archivedUnreadChatsCount}
- )} -
- - {lang('Contacts')} - - - {lang('Settings')} - - - {lang('lng_menu_night_mode')} - - - - {lang('Appearance.Animations').toLowerCase()} - 0} - /> - - - {lang('TelegramFeatures')} - - - Report Bug - - {IS_BETA && ( - - Beta Changelog - - )} - {withOtherVersions && ( - <> - - Switch to K Version - - - Switch to Old Version - - - )} - {canInstall && ( - - Install App - - )} + {menuItems} = ({ return menu; }; -export default Menu; +export default memo(Menu);