[Perf] Use useMemo with useHotkeys
This commit is contained in:
parent
f4200e5a64
commit
1c40b9b514
@ -1,5 +1,7 @@
|
||||
import type { RefObject } from 'react';
|
||||
import React, { memo, useEffect, useState } from '../../lib/teact/teact';
|
||||
import React, {
|
||||
memo, useEffect, useMemo, useState,
|
||||
} from '../../lib/teact/teact';
|
||||
import { getActions, withGlobal } from '../../global';
|
||||
|
||||
import type { GlobalState } from '../../global/types';
|
||||
@ -410,7 +412,7 @@ function LeftColumn({
|
||||
setContent(LeftColumnContent.Settings);
|
||||
});
|
||||
|
||||
useHotkeys({
|
||||
useHotkeys(useMemo(() => ({
|
||||
'Mod+Shift+F': handleHotkeySearch,
|
||||
// https://support.mozilla.org/en-US/kb/take-screenshots-firefox
|
||||
...(!IS_FIREFOX && {
|
||||
@ -421,7 +423,7 @@ function LeftColumn({
|
||||
'Mod+9': handleArchivedChats,
|
||||
}),
|
||||
...(IS_MAC_OS && IS_APP && { 'Mod+,': handleHotkeySettings }),
|
||||
});
|
||||
}), []));
|
||||
|
||||
useEffect(() => {
|
||||
clearTwoFaError();
|
||||
|
||||
@ -116,7 +116,7 @@ const ChatList: FC<OwnProps> = ({
|
||||
}, [shouldShowUnconfirmedSessions]);
|
||||
|
||||
// Support <Alt>+<Up/Down> to navigate between chats
|
||||
useHotkeys(isActive && orderedIds?.length ? {
|
||||
useHotkeys(useMemo(() => (isActive && orderedIds?.length ? {
|
||||
'Alt+ArrowUp': (e: KeyboardEvent) => {
|
||||
e.preventDefault();
|
||||
openNextChat({ targetIndexDelta: -1, orderedIds });
|
||||
@ -125,7 +125,7 @@ const ChatList: FC<OwnProps> = ({
|
||||
e.preventDefault();
|
||||
openNextChat({ targetIndexDelta: 1, orderedIds });
|
||||
},
|
||||
} : undefined);
|
||||
} : undefined), [isActive, orderedIds]));
|
||||
|
||||
// Support <Cmd>+<Digit> to navigate between chats
|
||||
useEffect(() => {
|
||||
|
||||
@ -146,12 +146,12 @@ const LeftMainHeader: FC<OwnProps & StateProps> = ({
|
||||
}
|
||||
});
|
||||
|
||||
useHotkeys(canSetPasscode ? {
|
||||
useHotkeys(useMemo(() => (canSetPasscode ? {
|
||||
'Ctrl+Shift+L': handleLockScreenHotkey,
|
||||
'Alt+Shift+L': handleLockScreenHotkey,
|
||||
'Meta+Shift+L': handleLockScreenHotkey,
|
||||
...(IS_APP && { 'Mod+L': handleLockScreenHotkey }),
|
||||
} : undefined);
|
||||
} : undefined), [canSetPasscode]));
|
||||
|
||||
const MainButton: FC<{ onTrigger: () => void; isOpen?: boolean }> = useMemo(() => {
|
||||
return ({ onTrigger, isOpen }) => (
|
||||
|
||||
@ -276,9 +276,9 @@ const HeaderActions: FC<OwnProps & StateProps> = ({
|
||||
showNotification({ message: getTextWithLanguage('AddedToDoNotTranslate', detectedChatLanguage) });
|
||||
});
|
||||
|
||||
useHotkeys({
|
||||
useHotkeys(useMemo(() => ({
|
||||
'Mod+F': handleHotkeySearchClick,
|
||||
});
|
||||
}), []));
|
||||
|
||||
const MoreMenuButton: FC<{ onTrigger: () => void; isOpen?: boolean }> = useMemo(() => {
|
||||
return ({ onTrigger, isOpen }) => (
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import { useMemo } from '../../../lib/teact/teact';
|
||||
import { getActions } from '../../../global';
|
||||
|
||||
import { useHotkeys } from '../../../hooks/useHotkeys';
|
||||
@ -8,7 +9,9 @@ const useCopySelectedMessages = (isActive?: boolean) => {
|
||||
getActions().copySelectedMessages();
|
||||
}
|
||||
|
||||
useHotkeys(isActive ? { 'Mod+C': handleCopy } : undefined);
|
||||
useHotkeys(useMemo(() => (isActive ? {
|
||||
'Mod+C': handleCopy,
|
||||
} : undefined), [isActive]));
|
||||
};
|
||||
|
||||
export default useCopySelectedMessages;
|
||||
|
||||
@ -1,17 +1,22 @@
|
||||
import { useMemo } from '../lib/teact/teact';
|
||||
|
||||
import getMessageIdsForSelectedText from '../util/getMessageIdsForSelectedText';
|
||||
import { useHotkeys } from './useHotkeys';
|
||||
import useLastCallback from './useLastCallback';
|
||||
|
||||
const useNativeCopySelectedMessages = (copyMessagesByIds: ({ messageIds }: { messageIds?: number[] }) => void) => {
|
||||
function handleCopy(e: KeyboardEvent) {
|
||||
const handleCopy = useLastCallback((e: KeyboardEvent) => {
|
||||
const messageIds = getMessageIdsForSelectedText();
|
||||
|
||||
if (messageIds && messageIds.length > 1) {
|
||||
e.preventDefault();
|
||||
copyMessagesByIds({ messageIds });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
useHotkeys({ 'Mod+C': handleCopy });
|
||||
useHotkeys(useMemo(() => ({
|
||||
'Mod+C': handleCopy,
|
||||
}), []));
|
||||
};
|
||||
|
||||
export default useNativeCopySelectedMessages;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user