From 8226becbee653ff9d5874cc9882b6fc68c6495d9 Mon Sep 17 00:00:00 2001 From: Claas Date: Sun, 28 Dec 2025 19:30:10 +0100 Subject: [PATCH] Avoid error from deserialization empty file --- app/src/service-worker/serviceWorker.ts | 26 ++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/app/src/service-worker/serviceWorker.ts b/app/src/service-worker/serviceWorker.ts index bf9969d..9612062 100644 --- a/app/src/service-worker/serviceWorker.ts +++ b/app/src/service-worker/serviceWorker.ts @@ -121,26 +121,38 @@ async function deleteClient() { } } + + async function initializeClient(): Promise { // Have to use wasm-pack --target web to build the wasm package to get the init function because with the bundler target // it is included as a top level await which is not supported by service workers according to the web spec // Has to be initialized before we do anything with the Rust code. It also needs to be initialized if a client exists await initialization; + console.debug("[Service worker/client initialization]: Initializing client"); // Try to load existing client const directory = await navigator.storage.getDirectory(); const fileHandle = await getFile(directory, FILE_NAME); - if (fileHandle !== undefined) { - const file = await fileHandle.getFile(); - const buffer = await file.arrayBuffer(); - return Client.from_serialized(new Uint8Array(buffer)); + console.debug("[Service worker/client initialization]: File handle acquired", fileHandle); + + if(fileHandle === undefined || fileHandle.kind !== "file"){ + console.debug("[Service worker/client initialization]: No file handle, creating new client"); + const client = new Client(); + return await persistClient(client); } - // Create new client - const client = new Client(); + const file = await fileHandle.getFile(); + + if(file.size === 0) { + console.debug("[Service worker/client initialization]: Empty file handle, creating new client"); + const client = new Client(); + return await persistClient(client); + } - return await persistClient(client); + console.debug("[Service worker/client initialization]: Deserializing client"); + const buffer = await file.arrayBuffer(); + return Client.from_serialized(new Uint8Array(buffer)); } let getClient = initializeClient(); -- 2.51.2