From 8d7353cbff5a1026eb24fecd60d2ecdef844f800 Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Tue, 19 May 2026 20:54:10 +0200 Subject: [PATCH] initDb: bestehende SQLite-Verbindung wiederverwenden statt Absturz [apk] Nach einem WebView-Reload lebt die native SQLite-Connection weiter. createConnection() warf dann 'Connection netdiag already exists' -> initDb() brach ab -> onMount im Layout brach ab -> die App haengt ewig auf 'NetDiag startet...'. Fix: vorhandene Verbindung per isConnection/retrieveConnection wiederverwenden, nur oeffnen wenn noch nicht offen. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/lib/db.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lib/db.ts b/src/lib/db.ts index e9a64bc..4914b3c 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -26,9 +26,17 @@ export async function initDb(): Promise { if (!useSqlite) return; const sqlite = new SQLiteConnection(CapacitorSQLite); - const conn = await sqlite.createConnection(DB_NAME, false, 'no-encryption', 1, false); - db = conn; - await db.open(); + // Nach einem WebView-Reload lebt die native SQLite-Verbindung weiter — + // createConnection wuerfe dann "Connection netdiag already exists" und der + // App-Start haengt ewig auf "NetDiag startet…". Vorhandene wiederverwenden. + const exists = (await sqlite.isConnection(DB_NAME, false)).result; + db = exists + ? await sqlite.retrieveConnection(DB_NAME, false) + : await sqlite.createConnection(DB_NAME, false, 'no-encryption', 1, false); + + if (!(await db.isDBOpen()).result) { + await db.open(); + } await db.execute(` CREATE TABLE IF NOT EXISTS protocols ( uuid TEXT PRIMARY KEY,