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
71 try db.deleteObjectStore(name)71 try db.deleteObjectStore(name)
72 return72 return
73 73
74 store: (doc, data, onSuccess, onError) ->74 store: (doc, data, onSuccess, onError, _retry = true) ->
75 @db (db) =>75 @db (db) =>
76 unless db76 unless db
77 onError()77 onError()
@@ -82,9 +82,13 @@ class app.DB · 4 unmodified lines
82 @cachedDocs?[doc.slug] = doc.mtime82 @cachedDocs?[doc.slug] = doc.mtime
83 onSuccess()83 onSuccess()
84 return84 return
85 txn.onerror = (event) ->85 txn.onerror = (event) =>
86 event.preventDefault()86 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)
88 return92 return
89 93
90 store = txn.objectStore(doc.slug)94 store = txn.objectStore(doc.slug)
@@ -96,7 +100,7 @@ class app.DB · 5 unmodified lines
96 return100 return
97 return101 return
98 102
99 unstore: (doc, onSuccess, onError) ->103 unstore: (doc, onSuccess, onError, _retry = true) ->
100 @db (db) =>104 @db (db) =>
101 unless db105 unless db
102 onError()106 onError()
@@ -109,7 +113,11 @@ class app.DB · 6 unmodified lines
109 return113 return
110 txn.onerror = (event) ->114 txn.onerror = (event) ->
111 event.preventDefault()115 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)
113 return121 return
114 122
115 store = txn.objectStore(doc.slug)123 store = txn.objectStore(doc.slug)