initDb: bestehende SQLite-Verbindung wiederverwenden statt Absturz [apk]
All checks were successful
Build APK / build-apk (push) Successful in 1m41s
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:
parent
36e66693f3
commit
8d7353cbff
1 changed files with 11 additions and 3 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue