initDb: bestehende SQLite-Verbindung wiederverwenden statt Absturz [apk]
All checks were successful
Build APK / build-apk (push) Successful in 1m41s

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) <noreply@anthropic.com>
This commit is contained in:
Eduard Wisch 2026-05-19 20:54:10 +02:00
parent 36e66693f3
commit 8d7353cbff

View file

@ -26,9 +26,17 @@ export async function initDb(): Promise<void> {
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,