From 890c00d4bac61593aadbe06f7b94b745718bff4c Mon Sep 17 00:00:00 2001 From: zadam Date: Wed, 29 May 2019 21:10:28 +0200 Subject: [PATCH] make frontendStartup event deterministic after the tree and tabs are loaded, fixes #543 --- src/public/javascripts/desktop.js | 2 -- src/public/javascripts/services/tree.js | 9 ++++++++- src/views/details/search.ejs | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/public/javascripts/desktop.js b/src/public/javascripts/desktop.js index 43d41ea72..f0f32956c 100644 --- a/src/public/javascripts/desktop.js +++ b/src/public/javascripts/desktop.js @@ -160,8 +160,6 @@ entrypoints.registerEntrypoints(); noteTooltipService.setupGlobalTooltip(); -bundle.executeStartupBundles(); - linkService.init(); noteAutocompleteService.init(); diff --git a/src/public/javascripts/services/tree.js b/src/public/javascripts/services/tree.js index c4d77be6c..958921f25 100644 --- a/src/public/javascripts/services/tree.js +++ b/src/public/javascripts/services/tree.js @@ -1,6 +1,5 @@ import contextMenuWidget from './context_menu.js'; import dragAndDropSetup from './drag_and_drop.js'; -import linkService from './link.js'; import messagingService from './messaging.js'; import noteDetailService from './note_detail.js'; import protectedSessionHolder from './protected_session_holder.js'; @@ -17,12 +16,16 @@ import hoistedNoteService from '../services/hoisted_note.js'; import confirmDialog from "../dialogs/confirm.js"; import optionsInit from "../services/options_init.js"; import TreeContextMenu from "./tree_context_menu.js"; +import bundle from "./bundle.js"; const $tree = $("#tree"); const $createTopLevelNoteButton = $("#create-top-level-note-button"); const $collapseTreeButton = $("#collapse-tree-button"); const $scrollToActiveNoteButton = $("#scroll-to-active-note-button"); +let setFrontendAsLoaded; +const frontendLoaded = new Promise(resolve => { setFrontendAsLoaded = resolve; }); + // focused & not active node can happen during multiselection where the node is selected but not activated // (its content is not displayed in the detail) function getFocusedNode() { @@ -362,6 +365,8 @@ async function treeInitialized() { // previous opening triggered task to save tab changes but these are bogus changes (this is init) // so we'll cancel it noteDetailService.clearOpenTabsTask(); + + setFrontendAsLoaded(); } let ignoreNextActivationNoteId = null; @@ -817,6 +822,8 @@ $collapseTreeButton.click(() => collapseTree()); $createTopLevelNoteButton.click(createNewTopLevelNote); $scrollToActiveNoteButton.click(scrollToActiveNote); +frontendLoaded.then(bundle.executeStartupBundles); + export default { reload, collapseTree, diff --git a/src/views/details/search.ejs b/src/views/details/search.ejs index 8b66193c7..3c85fff8c 100644 --- a/src/views/details/search.ejs +++ b/src/views/details/search.ejs @@ -1,5 +1,5 @@