import { useCallback, useEffect } from 'react'; import { isEmpty, isString } from 'lodash'; import { useDispatch } from 'react-redux'; import useKey from 'react-use/lib/useKey'; import useUpdate from 'react-use/lib/useUpdate'; 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'; import { groupInfoActions } from '../../../../state/ducks/metaGroups'; import { SessionToggle } from '../../../basic/SessionToggle'; export const OverlayChooseAction = () => { const dispatch = useDispatch(); const forceRefresh = useUpdate(); function closeOverlay() { dispatch(resetLeftOverlayMode()); } const openNewMessage = useCallback(() => { dispatch(setLeftOverlayMode('message')); }, [dispatch]); const openCreateGroup = useCallback(() => { dispatch(setLeftOverlayMode('closed-group')); dispatch(groupInfoActions.updateGroupCreationName({ name: '' })); dispatch(groupInfoActions.setSelectedGroupMembers({ membersToSet: [] })); }, [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 ( {window.sessionFeatureFlags.useClosedGroupV2QAButtons ? ( Create group v2?{' '} { window.sessionFeatureFlags.useClosedGroupV2 = !window.sessionFeatureFlags.useClosedGroupV2; forceRefresh(); }} /> ) : null} ); };