Skip to content

Commit 7f772b3

Browse files
committed
add back 100ms delays
1 parent 110809b commit 7f772b3

File tree

1 file changed

+42
-28
lines changed

1 file changed

+42
-28
lines changed

src/index.js

+42-28
Original file line numberDiff line numberDiff line change
@@ -12,36 +12,45 @@
1212

1313
export function open(dbName, version, upgradeCallback) {
1414
return new Promise((resolve, reject) => {
15-
// don't call open with 2 arguments, when version is not set
16-
const req = version ? idb().open(dbName, version) : idb().open(dbName)
17-
req.onblocked = (e) => {
18-
const resume = new Promise((res, rej) => {
19-
// We overwrite handlers rather than make a new
20-
// open() since the original request is still
21-
// open and its onsuccess will still fire if
22-
// the user unblocks by closing the blocking
23-
// connection
24-
req.onsuccess = ev => res(ev.target.result)
25-
req.onerror = ev => {
26-
ev.preventDefault()
27-
rej(ev.target.error)
15+
let isFirst = true
16+
const openDb = () => {
17+
// don't call open with 2 arguments, when version is not set
18+
const req = version ? idb().open(dbName, version) : idb().open(dbName)
19+
req.onblocked = (e) => {
20+
if (isFirst) {
21+
isFirst = false
22+
setTimeout(openDb, 100)
23+
return
2824
}
29-
})
30-
e.resume = resume
31-
reject(e)
32-
}
33-
if (typeof upgradeCallback === 'function') {
34-
req.onupgradeneeded = e => {
35-
upgradeCallback(e)
25+
const resume = new Promise((res, rej) => {
26+
// We overwrite handlers rather than make a new
27+
// open() since the original request is still
28+
// open and its onsuccess will still fire if
29+
// the user unblocks by closing the blocking
30+
// connection
31+
req.onsuccess = ev => res(ev.target.result)
32+
req.onerror = ev => {
33+
ev.preventDefault()
34+
rej(ev)
35+
}
36+
})
37+
e.resume = resume
38+
reject(e)
39+
}
40+
if (typeof upgradeCallback === 'function') {
41+
req.onupgradeneeded = e => {
42+
upgradeCallback(e)
43+
}
44+
}
45+
req.onerror = (e) => {
46+
e.preventDefault()
47+
reject(e)
48+
}
49+
req.onsuccess = (e) => {
50+
resolve(e.target.result)
3651
}
3752
}
38-
req.onerror = (e) => {
39-
e.preventDefault()
40-
reject(e)
41-
}
42-
req.onsuccess = (e) => {
43-
resolve(e.target.result)
44-
}
53+
openDb()
4554
})
4655
}
4756

@@ -59,9 +68,15 @@ export function del(db) {
5968
const dbName = typeof db !== 'string' ? db.name : db
6069

6170
return new Promise((resolve, reject) => {
71+
let isFirst = true
6272
const delDb = () => {
6373
const req = idb().deleteDatabase(dbName)
6474
req.onblocked = (e) => {
75+
if (isFirst) {
76+
isFirst = false
77+
setTimeout(delDb, 100)
78+
return
79+
}
6580
// The following addresses part of https://bugzilla.mozilla.org/show_bug.cgi?id=1220279
6681
e = e.newVersion === null || typeof Proxy === 'undefined' ? e : new Proxy(e, { get: (target, name) => {
6782
return name === 'newVersion' ? null : target[name]
@@ -81,7 +96,6 @@ export function del(db) {
8196
if (!('oldVersion' in ev)) {
8297
ev.oldVersion = e.oldVersion
8398
}
84-
8599
res(ev)
86100
}
87101
req.onerror = ev => {

0 commit comments

Comments
 (0)