feat(startup): display migration errors using system modal

This commit is contained in:
Elian Doran 2025-02-20 18:06:19 +02:00
parent ca1d5207d8
commit 1c118f2aa9
No known key found for this signature in database
4 changed files with 27 additions and 14 deletions

View File

@ -6,6 +6,7 @@ import { crash } from "./utils.js";
import resourceDir from "./resource_dir.js"; import resourceDir from "./resource_dir.js";
import appInfo from "./app_info.js"; import appInfo from "./app_info.js";
import cls from "./cls.js"; import cls from "./cls.js";
import { t } from "i18next";
interface MigrationInfo { interface MigrationInfo {
dbVersion: number; dbVersion: number;
@ -18,9 +19,7 @@ async function migrate() {
const currentDbVersion = getDbVersion(); const currentDbVersion = getDbVersion();
if (currentDbVersion < 214) { if (currentDbVersion < 214) {
log.error("Direct migration from your current version is not supported. Please upgrade to the latest v0.60.4 first and only then to this version."); await crash(t("migration.old_version"));
await crash();
return; return;
} }
@ -83,10 +82,7 @@ async function migrate() {
log.info(`Migration to version ${mig.dbVersion} has been successful.`); log.info(`Migration to version ${mig.dbVersion} has been successful.`);
} catch (e: any) { } catch (e: any) {
log.error(`error during migration to version ${mig.dbVersion}: ${e.stack}`); crash(t("migration.error_message", { version: mig.dbVersion, stack: e.stack }));
log.error("migration failed, crashing hard"); // this is not very user-friendly :-/
crash();
break; // crash() is sometimes async break; // crash() is sometimes async
} }
} }
@ -136,11 +132,7 @@ async function migrateIfNecessary() {
const currentDbVersion = getDbVersion(); const currentDbVersion = getDbVersion();
if (currentDbVersion > appInfo.dbVersion && process.env.TRILIUM_IGNORE_DB_VERSION !== "true") { if (currentDbVersion > appInfo.dbVersion && process.env.TRILIUM_IGNORE_DB_VERSION !== "true") {
log.error( await crash(t("migration.wrong_db_version", { version: currentDbVersion, targetVersion: appInfo.dbVersion }));
`Current DB version ${currentDbVersion} is newer than the current DB version ${appInfo.dbVersion}, which means that it was created by a newer and incompatible version of Trilium. Upgrade to the latest version of Trilium to resolve this issue.`
);
await crash();
} }
if (!isDbUpToDate()) { if (!isDbUpToDate()) {

View File

@ -10,6 +10,8 @@ import path from "path";
import { fileURLToPath } from "url"; import { fileURLToPath } from "url";
import { dirname, join } from "path"; import { dirname, join } from "path";
import type NoteMeta from "./meta/note_meta.js"; import type NoteMeta from "./meta/note_meta.js";
import log from "./log.js";
import { t } from "i18next";
const randtoken = generator({ source: "crypto" }); const randtoken = generator({ source: "crypto" });
@ -105,10 +107,13 @@ export function escapeRegExp(str: string) {
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
} }
export async function crash() { export async function crash(message: string) {
if (isElectron) { if (isElectron) {
(await import("electron")).app.exit(1); const electron = await import("electron");
electron.dialog.showErrorBox(t("modals.error_title"), message);
electron.app.exit(1);
} else { } else {
log.error(message);
process.exit(1); process.exit(1);
} }
} }

View File

@ -272,5 +272,13 @@
"today": "Open today's journal note", "today": "Open today's journal note",
"new-note": "New note", "new-note": "New note",
"show-windows": "Show windows" "show-windows": "Show windows"
},
"migration": {
"old_version": "Direct migration from your current version is not supported. Please upgrade to the latest v0.60.4 first and only then to this version.",
"error_message": "Error during migration to version {{version}}: {{stack}}",
"wrong_db_version": "Current DB version {{version}} is newer than the current DB version {{targetVersion}}, which means that it was created by a newer and incompatible version of Trilium. Upgrade to the latest version of Trilium to resolve this issue."
},
"modals": {
"error_title": "Error"
} }
} }

View File

@ -272,5 +272,13 @@
"today": "Mergi la notița de astăzi", "today": "Mergi la notița de astăzi",
"tooltip": "TriliumNext Notes", "tooltip": "TriliumNext Notes",
"show-windows": "Afișează ferestrele" "show-windows": "Afișează ferestrele"
},
"migration": {
"error_message": "Eroare la migrarea către versiunea {{version}}: {{stack}}",
"old_version": "Nu se poate migra la ultima versiune direct de la versiunea dvs. Actualizați mai întâi la versiunea v0.60.4 și ulterior la această versiune.",
"wrong_db_version": "Versiunea actuală a bazei de date ({{version}}) este mai nouă decât versiunea de bază de date suportată de aplicație ({{targetVersion}}), ceea ce înseamnă că a fost creată de către o versiune mai nouă de Trilium. Actualizați aplicația la ultima versiune pentru a putea continua."
},
"modals": {
"error_title": "Eroare"
} }
} }