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