import { useCallback, useEffect } from 'react'; import { isEmpty, isString } from 'lodash'; import { useDispatch } from 'react-redux'; import useKey from 'react-use/lib/useKey'; import { resetLeftOverlayMode, setLeftOverlayMode } from '../../../../state/ducks/section'; import { SpacerSM } from '../../../basic/Text'; import { StyledLeftPaneOverlay } from '../OverlayMessage'; import { ActionRow, StyledActionRowContainer } from './ActionRow'; import { ContactsListWithBreaks } from './ContactsListWithBreaks'; export const OverlayChooseAction = () => { const dispatch = useDispatch(); function closeOverlay() { dispatch(resetLeftOverlayMode()); } const openNewMessage = useCallback(() => { dispatch(setLeftOverlayMode('message')); }, [dispatch]); const openCreateGroup = useCallback(() => { dispatch(setLeftOverlayMode('closed-group')); }, [dispatch]); const openJoinCommunity = useCallback(() => { dispatch(setLeftOverlayMode('open-group')); }, [dispatch]); const inviteAFriend = useCallback(() => { dispatch(setLeftOverlayMode('invite-a-friend')); }, [dispatch]); useKey('Escape', closeOverlay); useEffect(() => { function handlePaste(event: ClipboardEvent) { event.preventDefault(); const pasted = event.clipboardData?.getData('text'); if (pasted && isString(pasted) && !isEmpty(pasted)) { if (pasted.startsWith('http') || pasted.startsWith('https')) { openJoinCommunity(); } else if (pasted.startsWith('05')) { openNewMessage(); } } } document?.addEventListener('paste', handlePaste); return () => { document?.removeEventListener('paste', handlePaste); }; }, [openJoinCommunity, openNewMessage]); return ( ); };