From 08af4a0465cd86819f57aa6f02eb7e2490709340 Mon Sep 17 00:00:00 2001 From: azivner Date: Sat, 7 Apr 2018 15:56:46 -0400 Subject: [PATCH] fix code mirror loading --- electron.js | 4 ++-- src/public/javascripts/services/library_loader.js | 13 +++++++------ src/public/javascripts/services/note_detail_code.js | 9 ++++----- src/public/javascripts/services/script_api.js | 3 ++- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/electron.js b/electron.js index 796e635d4..99eb48c29 100644 --- a/electron.js +++ b/electron.js @@ -76,12 +76,12 @@ app.on('ready', () => { const dateNoteService = require('./src/services/date_notes'); const dateUtils = require('./src/services/date_utils'); - const parentNoteId = await dateNoteService.getDateNote(dateUtils.nowDate()); + const parentNote = await dateNoteService.getDateNote(dateUtils.nowDate()); // window may be hidden / not in focus mainWindow.focus(); - mainWindow.webContents.send('create-day-sub-note', parentNoteId); + mainWindow.webContents.send('create-day-sub-note', parentNote.noteId); }); if (!result) { diff --git a/src/public/javascripts/services/library_loader.js b/src/public/javascripts/services/library_loader.js index f0b919200..83c69a5ae 100644 --- a/src/public/javascripts/services/library_loader.js +++ b/src/public/javascripts/services/library_loader.js @@ -32,18 +32,19 @@ async function requireLibrary(library) { } } -const dynamicallyLoadedScripts = []; +// we save the promises in case of the same script being required concurrently multiple times +const loadedScriptPromises = {}; async function requireScript(url) { - if (!dynamicallyLoadedScripts.includes(url)) { - dynamicallyLoadedScripts.push(url); - - return await $.ajax({ + if (!loadedScriptPromises[url]) { + loadedScriptPromises[url] = $.ajax({ url: url, dataType: "script", cache: true - }) + }); } + + await loadedScriptPromises[url]; } async function requireCss(url) { diff --git a/src/public/javascripts/services/note_detail_code.js b/src/public/javascripts/services/note_detail_code.js index cda9e703b..00b52194d 100644 --- a/src/public/javascripts/services/note_detail_code.js +++ b/src/public/javascripts/services/note_detail_code.js @@ -1,4 +1,3 @@ -import utils from "./utils.js"; import libraryLoader from "./library_loader.js"; import bundleService from "./bundle.js"; import infoService from "./info.js"; @@ -11,15 +10,15 @@ const $noteDetailCode = $('#note-detail-code'); const $executeScriptButton = $("#execute-script-button"); async function show() { - if (!codeEditor) { - await libraryLoader.requireLibrary(libraryLoader.CODE_MIRROR); + await libraryLoader.requireLibrary(libraryLoader.CODE_MIRROR); + if (!codeEditor) { CodeMirror.keyMap.default["Shift-Tab"] = "indentLess"; CodeMirror.keyMap.default["Tab"] = "indentMore"; CodeMirror.modeURL = 'libraries/codemirror/mode/%N/%N.js'; - codeEditor = CodeMirror($("#note-detail-code")[0], { + codeEditor = CodeMirror($noteDetailCode[0], { value: "", viewportMargin: Infinity, indentUnit: 4, @@ -38,7 +37,7 @@ async function show() { const currentNote = noteDetailService.getCurrentNote(); - // this needs to happen after the element is shown, otherwise the editor won't be refresheds + // this needs to happen after the element is shown, otherwise the editor won't be refreshed codeEditor.setValue(currentNote.content); const info = CodeMirror.findModeByMIME(currentNote.mime); diff --git a/src/public/javascripts/services/script_api.js b/src/public/javascripts/services/script_api.js index e419f5561..4e5ed46a8 100644 --- a/src/public/javascripts/services/script_api.js +++ b/src/public/javascripts/services/script_api.js @@ -57,7 +57,8 @@ function ScriptApi(startNote, currentNote) { formatDateISO: utils.formatDateISO, parseDate: utils.parseDate, showMessage: utils.showMessage, - showError: utils.showError + showError: utils.showError, + reloadTree: treeService.reload } }