Kaynağa Gözat

Merge pull request #10339 from overleaf/as-fix-switch-back

Fix bug in CM6 switch away survey where going back from Ace to CM6 will still show the survey

GitOrigin-RevId: 5900fafb1a4a5fab7d949b1c70af31e19a764e6e
Jakob Ackermann 3 yıl önce
ebeveyn
işleme
1c529d5dcf

+ 15 - 11
services/web/frontend/js/features/source-editor/components/cm6-switch-away-survey.tsx

@@ -36,29 +36,33 @@ export default function CM6SwitchAwaySurvey() {
       return
     }
 
-    if (!newSourceEditor) {
+    if (!newSourceEditor && !richText) {
       setState('enabled')
+    } else {
+      setState('disabled')
     }
   }, [newSourceEditor, richText])
 
   useEffect(() => {
-    if (state === 'enabled') {
-      const handleKeyDown = () => {
-        const TIME_FOR_SURVEY_TO_APPEAR = 3000
+    const handleKeyDown = () => {
+      const TIME_FOR_SURVEY_TO_APPEAR = 3000
 
-        setTimeout(() => {
+      setTimeout(() => {
+        if (state === 'enabled') {
           setState('shown')
           customLocalStorage.setItem(
             'editor.has_seen_cm6_switch_away_survey',
             true
           )
-        }, 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 })
+        }
+      }, 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(() => {