Procházet zdrojové kódy

BugFix: setKeymapMode timing

Yuki Takei před 6 roky
rodič
revize
e1c8e19307

+ 18 - 1
src/client/js/components/PageEditor/CodeMirrorEditor.js

@@ -383,7 +383,24 @@ export default class CodeMirrorEditor extends AbstractEditor {
 
 
     this.loadKeymapMode(keymapMode)
     this.loadKeymapMode(keymapMode)
       .then(() => {
       .then(() => {
-        this.getCodeMirror().setOption('keyMap', keymapMode);
+        let errorCount = 0;
+        const timer = setInterval(() => {
+          if (errorCount > 10) { // cancel over 3000ms
+            this.logger.error(`Timeout to load keyMap '${keymapMode}'`);
+            clearInterval(timer);
+          }
+
+          try {
+            this.getCodeMirror().setOption('keyMap', keymapMode);
+            clearInterval(timer);
+          }
+          catch (e) {
+            this.logger.info(`keyMap '${keymapMode}' has not been initialized. retry..`);
+
+            // continue if error occured
+            errorCount++;
+          }
+        }, 300);
       });
       });
   }
   }