diff --git a/electron.js b/electron.js index 68aad6391..f32f992ab 100644 --- a/electron.js +++ b/electron.js @@ -5,7 +5,6 @@ const sqlInit = require('./src/services/sql_init'); const appIconService = require('./src/services/app_icon'); const windowService = require('./src/services/window'); const tray = require('./src/services/tray'); -const beccaLoader = require("./src/becca/becca_loader"); // Adds debug features like hotkeys for triggering dev tools and reload require('electron-debug')(); @@ -29,17 +28,14 @@ app.on('ready', async () => { // if db is not initialized -> setup process // if db is initialized, then we need to wait until the migration process is finished if (sqlInit.isDbInitialized()) { - // first let electron open the window, it will probably keep initializing for some time in async - windowService.createMainWindow(app); - - // then becca load will block the backend process for a while await sqlInit.dbReady; - beccaLoader.loadInitially(); + + await windowService.createMainWindow(app); if (process.platform === 'darwin') { app.on('activate', async () => { if (BrowserWindow.getAllWindows().length === 0) { - windowService.createMainWindow(app); + await windowService.createMainWindow(app); } }); } diff --git a/package.json b/package.json index e476d4d8c..d0c307ae1 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ }, "scripts": { "start-server": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev node ./src/www", - "start-electron": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev electron --trace-warnings --inspect=5858 .", + "start-electron": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev electron --inspect=5858 .", "switch-server": "rm -r ./node_modules/better-sqlite3 && npm install", "switch-electron": "rm -r ./node_modules/better-sqlite3 && npm install && ./node_modules/.bin/electron-rebuild", "build-backend-docs": "rm -r ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js", diff --git a/src/becca/becca_loader.js b/src/becca/becca_loader.js index 64a1377cf..e21eeefe1 100644 --- a/src/becca/becca_loader.js +++ b/src/becca/becca_loader.js @@ -13,20 +13,16 @@ const EtapiToken = require("./entities/etapi_token"); const cls = require("../services/cls"); const entityConstructor = require("../becca/entity_constructor"); -let setBeccaAsLoaded = null; - const beccaLoaded = new Promise((res, rej) => { - setBeccaAsLoaded = res; + sqlInit.dbReady.then(() => { + load(); + + cls.init(() => require('../services/options_init').initStartupOptions()); + + res(); + }); }); -function loadInitially() { - load(); - - cls.init(() => require('../services/options_init').initStartupOptions()); - - setBeccaAsLoaded(); -} - function load() { const start = Date.now(); becca.reset(); @@ -249,6 +245,5 @@ eventService.subscribeBeccaLoader(eventService.LEAVE_PROTECTED_SESSION, load); module.exports = { load, reload, - beccaLoaded, - loadInitially + beccaLoaded }; diff --git a/src/becca/becca_service.js b/src/becca/becca_service.js index 954480ce0..f2cebbaae 100644 --- a/src/becca/becca_service.js +++ b/src/becca/becca_service.js @@ -1,7 +1,8 @@ "use strict"; -const becca = require('./becca'); +const becca = require('./becca.js'); const cls = require('../services/cls'); +const protectedSessionService = require('../services/protected_session'); const log = require('../services/log'); function isNotePathArchived(notePath) { diff --git a/src/services/scheduler.js b/src/services/scheduler.js index 3c5cd5bbb..20b964802 100644 --- a/src/services/scheduler.js +++ b/src/services/scheduler.js @@ -1,12 +1,12 @@ const scriptService = require('./script'); const cls = require('./cls'); +const sqlInit = require('./sql_init'); const config = require('./config'); const log = require('./log'); const sql = require("./sql"); const becca = require("../becca/becca"); const specialNotesService = require("../services/special_notes"); const protectedSessionService = require("../services/protected_session"); -const beccaLoader = require("../becca/becca_loader"); function getRunAtHours(note) { try { @@ -50,7 +50,7 @@ function runNotesWithLabel(runAttrValue) { } } -beccaLoader.beccaLoaded.then(() => { +sqlInit.dbReady.then(() => { if (!process.env.TRILIUM_SAFE_MODE) { cls.init(() => specialNotesService.createMissingSpecialNotes()); diff --git a/src/services/search/services/search.js b/src/services/search/services/search.js index bc469e8c7..42897ebc5 100644 --- a/src/services/search/services/search.js +++ b/src/services/search/services/search.js @@ -10,6 +10,7 @@ const becca = require('../../../becca/becca'); const beccaService = require('../../../becca/becca_service'); const utils = require('../../utils'); const log = require('../../log'); +const scriptService = require("../../script.js"); function searchFromNote(note) { let searchResultNoteIds, highlightedTokens; @@ -68,7 +69,6 @@ function searchFromRelation(note, relationName) { return []; } - const scriptService = require("../../script"); const result = scriptService.executeNote(scriptNote, { originEntity: note }); if (!Array.isArray(result)) { diff --git a/src/services/window.js b/src/services/window.js index 593bab020..6ccf16a5d 100644 --- a/src/services/window.js +++ b/src/services/window.js @@ -44,11 +44,11 @@ ipcMain.on('create-extra-window', (event, arg) => { createExtraWindow(arg.notePath, arg.hoistedNoteId); }); -function createMainWindow(app) { +async function createMainWindow(app) { const windowStateKeeper = require('electron-window-state'); // should not be statically imported const mainWindowState = windowStateKeeper({ - // default window width & height, so it's usable on 1600 * 900 display (including some extra panels etc.) + // default window width & height so it's usable on 1600 * 900 display (including some extra panels etc.) defaultWidth: 1200, defaultHeight: 800 }); diff --git a/src/www b/src/www index 965173e6d..4652c785c 100644 --- a/src/www +++ b/src/www @@ -25,10 +25,10 @@ const log = require('./services/log'); const appInfo = require('./services/app_info'); const ws = require('./services/ws'); const utils = require('./services/utils'); +const sqlInit = require('./services/sql_init'); const port = require('./services/port'); const host = require('./services/host'); const semver = require('semver'); -const beccaLoader = require("./becca/becca_loader"); if (!semver.satisfies(process.version, ">=10.5.0")) { console.error("Trilium only supports node.js 10.5 and later"); @@ -95,10 +95,6 @@ async function startTrilium() { const cpuInfos = require('os').cpus(); log.info(`CPU model: ${cpuInfos[0].model}, logical cores: ${cpuInfos.length} freq: ${cpuInfos[0].speed} Mhz`); // for perf. issues it's good to know the rough configuration - if (!utils.isElectron()) { - beccaLoader.loadInitially(); - } - /** * Listen on provided port, on all network interfaces. */