idb
idb copied to clipboard
DeleteDB should call Close()
DeleteDB always gets blocked because the database is never closed. It should automatically be closed on Delete.
Otherwise something like this is necessary:
unwrap(await db).close();
await new Promise(resolve => setTimeout(resolve, 10000));
const deleteAsync = deleteDB(databaseName, {
blocked(blockedVersion, blockedEvent) {
logger.error({ title: 'Database blocked from being deleted', blockedVersion, blockedEvent });
}
}
Why not just db.close()
?
and why the wait? db
is not intrinsically a promise, right? If you do const db = await openDB(...)
, db is a IDBP, not a Promise for an IDBP.
This works for me:
const db = openDB(.., {
blocked: () => db.close()
})
...
deleteDB(db)
I don't believe the types supported that. But I can always check again.
And close is async, and I believe blocked doesn't handle promises well. But something might have changed.
So how should I ascertain I can delete the database?
Is close async? Close on plain indexeddb doesn't have event handlers right? If so, why would it be async in this library?