mirror of https://github.com/xwiki-labs/cryptpad
fix race condition in codemirror initialization
over slow connections, iframes don't load fast enough to be ready for code which depends on certain features existing. wait until they're ready, then initialize.
This commit is contained in:
parent
41fe0faa04
commit
663e987345
|
@ -8,7 +8,7 @@ define([
|
|||
'/customize/pad.js'
|
||||
var $ = window.jQuery;
|
||||
var ifrw = $('#pad-iframe')[0].contentWindow;
|
||||
var CMeditor = ifrw.CodeMirror;
|
||||
var CMeditor;
|
||||
|
||||
$(function () {
|
||||
$(window).on('hashchange', function() {
|
||||
|
@ -18,32 +18,50 @@ define([
|
|||
window.location.href = window.location.href + '#' + Crypto.genKey();
|
||||
return;
|
||||
}
|
||||
var key = Crypto.parseKey(window.location.hash.substring(1));
|
||||
var editor = CMeditor.fromTextArea($('#pad-iframe').contents().find('#editor1')[0], {
|
||||
lineNumbers: true,
|
||||
lineWrapping: true,
|
||||
autoCloseBrackets: true,
|
||||
matchBrackets : true,
|
||||
showTrailingSpace : true,
|
||||
styleActiveLine : true,
|
||||
search: true,
|
||||
highlightSelectionMatches: {showToken: /\w+/},
|
||||
extraKeys: {"Ctrl-Q": function(cm){ cm.foldCode(cm.getCursor()); }},
|
||||
foldGutter: true,
|
||||
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
|
||||
mode: "javascript"
|
||||
});
|
||||
editor.setValue(Messages.codeInitialState);
|
||||
|
||||
var rtw =
|
||||
RTWiki.start(ifrw,
|
||||
Config.websocketURL,
|
||||
Crypto.rand64(8),
|
||||
key.channel,
|
||||
key.cryptKey);
|
||||
editor.on('change', function() {
|
||||
editor.save();
|
||||
rtw.onEvent();
|
||||
});
|
||||
var andThen = function () {
|
||||
var key = Crypto.parseKey(window.location.hash.substring(1));
|
||||
var editor = CMeditor.fromTextArea($('#pad-iframe').contents().find('#editor1')[0], {
|
||||
lineNumbers: true,
|
||||
lineWrapping: true,
|
||||
autoCloseBrackets: true,
|
||||
matchBrackets : true,
|
||||
showTrailingSpace : true,
|
||||
styleActiveLine : true,
|
||||
search: true,
|
||||
highlightSelectionMatches: {showToken: /\w+/},
|
||||
extraKeys: {"Ctrl-Q": function(cm){ cm.foldCode(cm.getCursor()); }},
|
||||
foldGutter: true,
|
||||
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
|
||||
mode: "javascript"
|
||||
});
|
||||
editor.setValue(Messages.codeInitialState);
|
||||
|
||||
var rtw =
|
||||
RTWiki.start(ifrw,
|
||||
Config.websocketURL,
|
||||
Crypto.rand64(8),
|
||||
key.channel,
|
||||
key.cryptKey);
|
||||
editor.on('change', function() {
|
||||
editor.save();
|
||||
rtw.onEvent();
|
||||
});
|
||||
};
|
||||
|
||||
var interval = 100;
|
||||
|
||||
var first = function () {
|
||||
if (CMeditor = ifrw.CodeMirror) {
|
||||
// it exists, call your continuation
|
||||
andThen();
|
||||
} else {
|
||||
console.log("CMeditor was not defined. Trying again in %sms", interval);
|
||||
// try again in 'interval' ms
|
||||
setTimeout(first, interval);
|
||||
}
|
||||
};
|
||||
|
||||
first();
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue