diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-08-17 01:03:55 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-08-17 01:03:55 +0200 |
commit | d947b90df330d8e3598fd95ccacb8d511923ead8 (patch) | |
tree | e9bcb839fdc8c24637fc12ec09ca7c7ca06f4aec /packages/idb-bridge/src/BridgeIDBFactory.ts | |
parent | 3263d05ce957a3f81234749eb9eefc0bce7ff645 (diff) | |
download | wallet-core-d947b90df330d8e3598fd95ccacb8d511923ead8.tar.xz |
idb-bridge: indexes belong to object stores
Diffstat (limited to 'packages/idb-bridge/src/BridgeIDBFactory.ts')
-rw-r--r-- | packages/idb-bridge/src/BridgeIDBFactory.ts | 29 |
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( |