From 81c8daf852ba5a12370181438514a6e5a8bb7f7c Mon Sep 17 00:00:00 2001 From: jj Date: Wed, 11 Jun 2025 14:23:28 +0000 Subject: [PATCH] web/storage: robuster er opfs availability check --- web/src/lib/storage/opfs.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/web/src/lib/storage/opfs.ts b/web/src/lib/storage/opfs.ts index 623d0b93..d745cb34 100644 --- a/web/src/lib/storage/opfs.ts +++ b/web/src/lib/storage/opfs.ts @@ -42,16 +42,29 @@ export class OPFSStorage extends AbstractStorage { } static async #computeIsAvailable() { + let tempFile = uuid(), ok = true; + if (typeof navigator === 'undefined') return false; if ('storage' in navigator && 'getDirectory' in navigator.storage) { try { - await navigator.storage.getDirectory(); - return true; + const root = await navigator.storage.getDirectory(); + const handle = await root.getFileHandle(tempFile, { create: true }); + const syncAccess = await handle.createSyncAccessHandle(); + syncAccess.close(); } catch { - return false; + ok = false; } + + try { + const root = await navigator.storage.getDirectory(); + await root.removeEntry(tempFile, { recursive: true }); + } catch { + ok = false; + } + + return ok; } return false;