aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/BridgeIDBFactory.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/idb-bridge/src/BridgeIDBFactory.ts')
-rw-r--r--packages/idb-bridge/src/BridgeIDBFactory.ts29
1 files changed, 26 insertions, 3 deletions
diff --git a/packages/idb-bridge/src/BridgeIDBFactory.ts b/packages/idb-bridge/src/BridgeIDBFactory.ts
index e37ee2b26..0fbcd7630 100644
--- a/packages/idb-bridge/src/BridgeIDBFactory.ts
+++ b/packages/idb-bridge/src/BridgeIDBFactory.ts
@@ -44,7 +44,7 @@ export class BridgeIDBFactory {
queueTask(async () => {
const databases = await this.backend.getDatabases();
- const dbInfo = databases.find((x) => x.name == name);
+ const dbInfo = databases.find(x => x.name == name);
if (!dbInfo) {
// Database already doesn't exist, success!
const event = new BridgeIDBVersionChangeEvent("success", {
@@ -58,7 +58,10 @@ export class BridgeIDBFactory {
try {
const dbconn = await this.backend.connectDatabase(name);
- const backendTransaction = await this.backend.enterVersionChange(dbconn, 0);
+ const backendTransaction = await this.backend.enterVersionChange(
+ dbconn,
+ 0,
+ );
await this.backend.deleteDatabase(backendTransaction, name);
await this.backend.commit(backendTransaction);
await this.backend.close(dbconn);
@@ -120,6 +123,11 @@ export class BridgeIDBFactory {
const requestedVersion = version;
+ BridgeIDBFactory.enableTracing &&
+ console.log(
+ `TRACE: existing version ${existingVersion}, requested version ${requestedVersion}`,
+ );
+
if (existingVersion > requestedVersion) {
request._finishWithError(new VersionError());
return;
@@ -127,6 +135,18 @@ export class BridgeIDBFactory {
const db = new BridgeIDBDatabase(this.backend, dbconn);
+ if (existingVersion == requestedVersion) {
+ request.result = db;
+ request.readyState = "done";
+
+ const event2 = new FakeEvent("success", {
+ bubbles: false,
+ cancelable: false,
+ });
+ event2.eventPath = [request];
+ request.dispatchEvent(event2);
+ }
+
if (existingVersion < requestedVersion) {
// http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#dfn-steps-for-running-a-versionchange-transaction
@@ -146,7 +166,10 @@ export class BridgeIDBFactory {
request.dispatchEvent(event);
}
- const backendTransaction = await this.backend.enterVersionChange(dbconn, requestedVersion);
+ const backendTransaction = await this.backend.enterVersionChange(
+ dbconn,
+ requestedVersion,
+ );
db._runningVersionchangeTransaction = true;
const transaction = db._internalTransaction(