simplify more

This commit is contained in:
Simon Knott 2025-02-05 10:02:09 +01:00
parent 11c1819a46
commit caccaef7ad
No known key found for this signature in database
GPG key ID: 8CEDC00028084AEC

View file

@ -520,31 +520,23 @@ export abstract class BrowserContext extends SdkObject {
if (!dbInfo.name) if (!dbInfo.name)
throw new Error('Database name is empty'); throw new Error('Database name is empty');
const db = await new Promise<IDBDatabase>((resolve, reject) => { function idbRequestToPromise<T extends IDBOpenDBRequest | IDBRequest>(request: T) {
const request = indexedDB.open(dbInfo.name!); return new Promise<T['result']>((resolve, reject) => {
request.onerror = reject; request.addEventListener('success', () => resolve(request.result));
request.onsuccess = () => resolve(request.result); request.addEventListener('error', () => reject(request.error));
}); });
}
const db = await idbRequestToPromise(indexedDB.open(dbInfo.name));
const transaction = db.transaction(db.objectStoreNames, 'readonly'); const transaction = db.transaction(db.objectStoreNames, 'readonly');
const stores = await Promise.all([...db.objectStoreNames].map(async storeName => { const stores = await Promise.all([...db.objectStoreNames].map(async storeName => {
const objectStore = transaction.objectStore(storeName); const objectStore = transaction.objectStore(storeName);
const keys = await new Promise<any[]>((resolve, reject) => {
const request = objectStore.getAllKeys();
request.addEventListener('success', () => resolve(request.result));
request.addEventListener('error', reject);
});
const keys = await idbRequestToPromise(objectStore.getAllKeys());
const records = await Promise.all(keys.map(async key => { const records = await Promise.all(keys.map(async key => {
const record = await new Promise<any>((resolve, reject) => {
const request = objectStore.get(key);
request.addEventListener('success', () => resolve(request.result));
request.addEventListener('error', reject);
});
return { return {
key: objectStore.keyPath === null ? key.toString() : undefined, key: objectStore.keyPath === null ? key.toString() : undefined, // TODO: fix this
value: record value: await idbRequestToPromise(objectStore.get(key))
}; };
})); }));