diff --git a/src/routes/api/tree.js b/src/routes/api/tree.js index cc21189cc..afa6a33aa 100644 --- a/src/routes/api/tree.js +++ b/src/routes/api/tree.js @@ -40,6 +40,8 @@ async function getNotes(noteIds) { protectedSessionService.decryptNotes(notes); + await noteCacheService.loadedPromise; + notes.forEach(note => { note.isProtected = !!note.isProtected; note.archived = noteCacheService.isArchived(note.noteId) diff --git a/src/services/note_cache.js b/src/services/note_cache.js index 2c5a8f0b6..37b53a011 100644 --- a/src/services/note_cache.js +++ b/src/services/note_cache.js @@ -8,6 +8,12 @@ const hoistedNoteService = require('./hoisted_note'); const stringSimilarity = require('string-similarity'); let loaded = false; +let loadedPromiseResolve; +/** Is resolved after the initial load */ +let loadedPromise = new Promise(res => { + loadedPromiseResolve = res; +}); + let noteTitles = {}; let protectedNoteTitles = {}; let noteIds; @@ -43,6 +49,7 @@ async function load() { } loaded = true; + loadedPromiseResolve(); } async function loadProtectedNotes() { @@ -499,9 +506,10 @@ eventService.subscribe(eventService.ENTER_PROTECTED_SESSION, () => { } }); -sqlInit.dbReady.then(() => utils.stopWatch("Autocomplete load", load)); +sqlInit.dbReady.then(() => utils.stopWatch("Note cache load", load)); module.exports = { + loadedPromise, findNotes, getNotePath, getNoteTitleForPath,