From 9e85d2cdbd271c6bf8b98ac80d65eb6f08816c4b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 14 Sep 2024 14:34:24 +0300 Subject: [PATCH] server: Fix missing translations in keyboard actions --- src/becca/becca_loader.ts | 4 +++- src/services/keyboard_actions.ts | 4 ++++ src/services/sql_init.ts | 9 +++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/becca/becca_loader.ts b/src/becca/becca_loader.ts index 9df2362ed3..8bdfd475e7 100644 --- a/src/becca/becca_loader.ts +++ b/src/becca/becca_loader.ts @@ -13,11 +13,13 @@ import cls from "../services/cls.js"; import entityConstructor from "../becca/entity_constructor.js"; import { AttributeRow, BranchRow, EtapiTokenRow, NoteRow, OptionRow } from './entities/rows.js'; import AbstractBeccaEntity from "./entities/abstract_becca_entity.js"; -import options_init from "../services/options_init.js"; import ws from "../services/ws.js"; const beccaLoaded = new Promise(async (res, rej) => { const sqlInit = (await import("../services/sql_init.js")).default; + // We have to import async since options init requires keyboard actions which require translations. + const options_init = (await import("../services/options_init.js")).default; + sqlInit.dbReady.then(() => { cls.init(() => { load(); diff --git a/src/services/keyboard_actions.ts b/src/services/keyboard_actions.ts index c00186ef60..e039d52baf 100644 --- a/src/services/keyboard_actions.ts +++ b/src/services/keyboard_actions.ts @@ -18,6 +18,10 @@ const isElectron = utils.isElectron(); * e.g. CTRL-C in note tree does something a bit different from CTRL-C in the text editor. */ +if (!t("keyboard_actions.note-navigation")) { + throw new Error("Keyboard actions loaded before translations."); +} + const DEFAULT_KEYBOARD_ACTIONS: KeyboardShortcut[] = [ { separator: t("keyboard_actions.note-navigation") diff --git a/src/services/sql_init.ts b/src/services/sql_init.ts index 7155147462..256971423e 100644 --- a/src/services/sql_init.ts +++ b/src/services/sql_init.ts @@ -11,7 +11,6 @@ import migrationService from "./migration.js"; import cls from "./cls.js"; import config from "./config.js"; import { OptionRow } from '../becca/entities/rows.js'; -import optionsInitService from "./options_init.js"; import BNote from "../becca/entities/bnote.js"; import BBranch from "../becca/entities/bbranch.js"; import zipImportService from "./import/zip.js"; @@ -62,6 +61,9 @@ async function createInitialDatabase() { let rootNote!: BNote; + // We have to import async since options init requires keyboard actions which require translations. + const optionsInitService = (await import("./options_init.js")).default; + sql.transactional(() => { log.info("Creating database schema ..."); @@ -86,7 +88,7 @@ async function createInitialDatabase() { isExpanded: true, notePosition: 10 }).save(); - + optionsInitService.initDocumentOptions(); optionsInitService.initNotSyncedOptions(true, defaultTheme, {}); optionsInitService.initStartupOptions(); @@ -129,6 +131,9 @@ async function createDatabaseForSync(options: OptionRow[], syncServerHost = '', const defaultTheme = await getDefaultTheme(); const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, "utf8"); + // We have to import async since options init requires keyboard actions which require translations. + const optionsInitService = (await import("./options_init.js")).default; + sql.transactional(() => { sql.executeScript(schema);