TelegramPWA/src/hooks/useNativeCopySelectedMessages.ts
2022-02-25 22:52:48 +02:00

28 lines
955 B
TypeScript

import { useEffect } from '../lib/teact/teact';
import { IS_MAC_OS } from '../util/environment';
import getKeyFromEvent from '../util/getKeyFromEvent';
import getMessageIdsForSelectedText from '../util/getMessageIdsForSelectedText';
const useNativeCopySelectedMessages = (copyMessagesByIds: ({ messageIds }: { messageIds?: number[] }) => void) => {
useEffect(() => {
function handleCopy(e: KeyboardEvent) {
if (((IS_MAC_OS && e.metaKey) || (!IS_MAC_OS && e.ctrlKey)) && getKeyFromEvent(e) === 'c') {
const messageIds = getMessageIdsForSelectedText();
if (messageIds && messageIds.length > 0) {
e.preventDefault();
copyMessagesByIds({ messageIds });
}
}
}
document.addEventListener('keydown', handleCopy, false);
return () => {
document.removeEventListener('keydown', handleCopy, false);
};
}, [copyMessagesByIds]);
};
export default useNativeCopySelectedMessages;