Files
Hydro/packages/ui-default/utils/db.ts
T

34 lines
1.3 KiB
TypeScript

import { openDB as _open } from 'idb';
import { alert } from 'vj/components/dialog';
export const openDB = _open('hydro', 2, {
upgrade(db, oldVersion) {
if (oldVersion < 1) {
const solutionStore = db.createObjectStore('solutions', { keyPath: 'id' });
db.createObjectStore('scoreboard-star', { keyPath: 'id' });
const keys = Object.keys(localStorage);
for (const key of keys) {
if (key.endsWith('#objective')) {
const value = localStorage.getItem(key);
if (value) solutionStore.put({ id: key, value });
localStorage.removeItem(key);
}
if (key.startsWith('scoreboard-star/')) localStorage.removeItem(key);
if (/^0\.\d+$/.test(key)) localStorage.removeItem(key);
}
}
if (oldVersion < 2) db.createObjectStore('domain-info', { keyPath: 'id' });
},
blocked(currentVersion, blockedVersion) {
console.error('IDB Blocked by version', blockedVersion, 'want', currentVersion);
alert('Some other opened tabs locked the database. Please close them.');
},
blocking(currentVersion, blockedVersion) {
console.error('IDB Blocking version', blockedVersion);
alert('Please close or refresh this tab to perform the upgrade.');
},
terminated() {
console.error('IDB Terminated');
},
});