import { useCallback, useEffect, useState } from 'react' import { Button } from 'react-bootstrap' import useScopeValue from '../../../shared/hooks/use-scope-value' import { hasSeenCM6SwitchAwaySurvey, setHasSeenCM6SwitchAwaySurvey, } from '../utils/switch-away-survey' import { sendMB } from '../../../infrastructure/event-tracking' type CM6SwitchAwaySurveyState = 'disabled' | 'enabled' | 'shown' export default function CM6SwitchAwaySurvey() { const [state, setState] = useState('disabled') const [newSourceEditor] = useScopeValue('editor.newSourceEditor') useEffect(() => { // If the user has previously seen any switch-away survey, then don't show // the current one if (hasSeenCM6SwitchAwaySurvey()) return if (!newSourceEditor) { setState('enabled') } else { setState('disabled') } }, [newSourceEditor]) useEffect(() => { const handleKeyDown = () => { const TIME_FOR_SURVEY_TO_APPEAR = 3000 setTimeout(() => { if (state === 'enabled') { setState('shown') setHasSeenCM6SwitchAwaySurvey() } }, TIME_FOR_SURVEY_TO_APPEAR) } // can't access the ace editor directly, so add the keydown event // to window window?.addEventListener('keydown', handleKeyDown, { once: true }) return () => window?.removeEventListener('keydown', handleKeyDown) }, [state]) const handleClose = useCallback(() => { setState('disabled') }, []) const handleFollowLink = useCallback(() => { sendMB('cm6-switch-away-survey') setState('disabled') }, []) if (state !== 'shown') { return null } return (
We noticed that you're still using the{' '} Source (legacy) editor.
Could you let us know why?
Take survey
) }