// 📦 IndexedDB Helper function openDB() { return new Promise((resolve, reject) => { const request = indexedDB.open('directory-handle-db', 1); request.onupgradeneeded = () => { request.result.createObjectStore('handles'); }; request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } // 💾 Store a directory handle export async function setDirectoryHandle(handle) { const db = await openDB(); const tx = db.transaction('handles', 'readwrite'); tx.objectStore('handles').put(handle, 'my-folder'); await tx.done; } // 📂 Retrieve a directory handle export async function getDirectoryHandle() { const db = await openDB(); const tx = db.transaction('handles', 'readonly'); return new Promise((resolve, reject) => { const getRequest = tx.objectStore('handles').get('my-folder'); getRequest.onsuccess = () => resolve(getRequest.result); getRequest.onerror = () => { console.error('Error retrieving directory handle:', getRequest.error); return resolve(false); } }); } // 🔐 Check or request permission async function verifyPermission(handle, mode = 'readwrite') { const opts = { mode }; if ((await handle.queryPermission(opts)) === 'granted') return true; if ((await handle.requestPermission(opts)) === 'granted') return true; return false; } // 📌 Request persistent storage async function ensurePersistentStorage() { if (navigator.storage && navigator.storage.persist) { const granted = await navigator.storage.persist(); console.log(granted ? '✅ Persistent storage granted.' : '⚠️ Storage may be cleared under pressure.'); } }