simplify code
This commit is contained in:
parent
f11bc7c8fd
commit
11c1819a46
|
|
@ -696,8 +696,14 @@ export abstract class BrowserContext extends SdkObject {
|
||||||
for (const { name, value } of (originState.localStorage || []))
|
for (const { name, value } of (originState.localStorage || []))
|
||||||
localStorage.setItem(name, value);
|
localStorage.setItem(name, value);
|
||||||
|
|
||||||
|
function idbRequestToPromise<T extends IDBOpenDBRequest | IDBRequest>(request: T) {
|
||||||
|
return new Promise<T['result']>((resolve, reject) => {
|
||||||
|
request.addEventListener('success', () => resolve(request.result));
|
||||||
|
request.addEventListener('error', () => reject(request.error));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
await Promise.all((originState.indexedDB ?? []).map(async dbInfo => {
|
await Promise.all((originState.indexedDB ?? []).map(async dbInfo => {
|
||||||
await new Promise<void>((resolve, reject) => {
|
|
||||||
const openRequest = indexedDB.open(dbInfo.name, dbInfo.version);
|
const openRequest = indexedDB.open(dbInfo.name, dbInfo.version);
|
||||||
openRequest.addEventListener('upgradeneeded', () => {
|
openRequest.addEventListener('upgradeneeded', () => {
|
||||||
const db = openRequest.result;
|
const db = openRequest.result;
|
||||||
|
|
@ -707,25 +713,21 @@ export abstract class BrowserContext extends SdkObject {
|
||||||
objectStore.createIndex(index.name, index.keyPathArray ?? index.keyPath!, { unique: index.unique, multiEntry: index.multiEntry });
|
objectStore.createIndex(index.name, index.keyPathArray ?? index.keyPath!, { unique: index.unique, multiEntry: index.multiEntry });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
openRequest.addEventListener('success', async () => {
|
|
||||||
const db = openRequest.result;
|
const db = await idbRequestToPromise(openRequest);
|
||||||
const transaction = db.transaction(db.objectStoreNames, 'readwrite');
|
const transaction = db.transaction(db.objectStoreNames, 'readwrite');
|
||||||
await Promise.all(dbInfo.stores.flatMap(store => {
|
await Promise.all(dbInfo.stores.flatMap(store => {
|
||||||
const objectStore = transaction.objectStore(store.name);
|
const objectStore = transaction.objectStore(store.name);
|
||||||
return store.records.map(record => new Promise((resolve, reject) => {
|
return store.records.map(async record => {
|
||||||
const request = objectStore.add(
|
await idbRequestToPromise(
|
||||||
|
objectStore.add(
|
||||||
record.value as any, // protocol says string, but this got deserialized above
|
record.value as any, // protocol says string, but this got deserialized above
|
||||||
objectStore.keyPath === null ? record.key : undefined
|
objectStore.keyPath === null ? record.key : undefined
|
||||||
|
)
|
||||||
);
|
);
|
||||||
request.addEventListener('success', resolve);
|
|
||||||
request.addEventListener('error', reject);
|
|
||||||
}));
|
|
||||||
}));
|
|
||||||
transaction.addEventListener('complete', () => resolve());
|
|
||||||
transaction.addEventListener('error', () => reject(transaction.error));
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
await frame.evaluateExpression(_restoreStorageState.toString(), { isFunction: true, world: 'utility' }, originState);
|
await frame.evaluateExpression(_restoreStorageState.toString(), { isFunction: true, world: 'utility' }, originState);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue