Unified · Split
| @@ -71,7 +71,7 @@ class app.DB · 70 unmodified lines | |||
| 71 | try db.deleteObjectStore(name) | 71 | try db.deleteObjectStore(name) |
| 72 | return | 72 | 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 db | 76 | unless db |
| 77 | onError() | 77 | onError() |
| @@ -82,9 +82,13 @@ class app.DB · 4 unmodified lines | |||
| 82 | @cachedDocs?[doc.slug] = doc.mtime | 82 | @cachedDocs?[doc.slug] = doc.mtime |
| 83 | onSuccess() | 83 | onSuccess() |
| 84 | return | 84 | 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 | return | 92 | 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 | return | 100 | return |
| 97 | return | 101 | return |
| 98 | 102 | ||
| 99 | unstore: (doc, onSuccess, onError) -> | 103 | unstore: (doc, onSuccess, onError, _retry = true) -> |
| 100 | @db (db) => | 104 | @db (db) => |
| 101 | unless db | 105 | unless db |
| 102 | onError() | 106 | onError() |
| @@ -109,7 +113,11 @@ class app.DB · 6 unmodified lines | |||
| 109 | return | 113 | 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 | return | 121 | return |
| 114 | 122 | ||
| 115 | store = txn.objectStore(doc.slug) | 123 | store = txn.objectStore(doc.slug) |