From 3b9de8f54999e15837f8d34e7f23223be79a9356 Mon Sep 17 00:00:00 2001 From: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:55:35 -0700 Subject: [PATCH] Better error handling for getSQLKey --- app/main.ts | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/app/main.ts b/app/main.ts index 0b3795853e3..602afacadeb 100644 --- a/app/main.ts +++ b/app/main.ts @@ -1684,6 +1684,32 @@ async function initializeSQL( ): Promise<{ ok: true; error: undefined } | { ok: false; error: Error }> { sqlInitTimeStart = Date.now(); + let key: string; + try { + key = getSQLKey(); + } catch (error) { + try { + // Initialize with *some* key to setup paths + await sql.initialize({ + appVersion: app.getVersion(), + configDir: userDataPath, + key: 'abcd', + logger: getLogger(), + }); + } catch { + // Do nothing, we fail right below anyway. + } + + if (error instanceof Error) { + return { ok: false, error }; + } + + return { + ok: false, + error: new Error(`initializeSQL: Caught a non-error '${error}'`), + }; + } + try { // This should be the first awaited call in this function, otherwise // `sql.sqlRead` will throw an uninitialized error instead of waiting for @@ -1691,7 +1717,7 @@ async function initializeSQL( await sql.initialize({ appVersion: app.getVersion(), configDir: userDataPath, - key: getSQLKey(), + key, logger: getLogger(), }); } catch (error: unknown) {