History

Attempt to handle bogus IDB NotFoundError

Thibaut Courouble committed 10 years ago

Commit 11936b01 parent 426b4b21 file · +13 −5Browse files

Unified · Split

assets/javascripts/app/db.coffee+13−5
@@ -71,7 +71,7 @@ class app.DB · 70 unmodified lines
7171 try db.deleteObjectStore(name)
7272 return
7373
74− store: (doc, data, onSuccess, onError) ->
74+ store: (doc, data, onSuccess, onError, _retry = true) ->
7575 @db (db) =>
7676 unless db
7777 onError()
@@ -82,9 +82,13 @@ class app.DB · 4 unmodified lines
8282 @cachedDocs?[doc.slug] = doc.mtime
8383 onSuccess()
8484 return
85− txn.onerror = (event) ->
85+ txn.onerror = (event) =>
8686 event.preventDefault()
87− onError(event)
87+ if txn.error.name is 'NotFoundError' and _retry
88+ @migrate()
89+ @store(doc, data, onSuccess, onError, false)
90+ else
91+ onError(event)
8892 return
8993
9094 store = txn.objectStore(doc.slug)
@@ -96,7 +100,7 @@ class app.DB · 5 unmodified lines
96100 return
97101 return
98102
99− unstore: (doc, onSuccess, onError) ->
103+ unstore: (doc, onSuccess, onError, _retry = true) ->
100104 @db (db) =>
101105 unless db
102106 onError()
@@ -109,7 +113,11 @@ class app.DB · 6 unmodified lines
109113 return
110114 txn.onerror = (event) ->
111115 event.preventDefault()
112− onError(event)
116+ if txn.error.name is 'NotFoundError' and _retry
117+ @migrate()
118+ @unstore(doc, onSuccess, onError, false)
119+ else
120+ onError(event)
113121 return
114122
115123 store = txn.objectStore(doc.slug)