Skip to content

Commit a5fb928

Browse files
committed
IDB fallback error handler returns actual error, if available
1 parent 47954a9 commit a5fb928

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/indexeddb.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ class IndexedDB extends CachingLayer {
400400
DEFAULT_DB = db;
401401
// TODO Use specific type
402402
(db as any).onerror = evt => {
403-
remoteStorage._emit('error', new Error(`database error: ${evt?.type}`));
403+
remoteStorage._emit('error', IndexedDB.eventToError(evt));
404404
};
405405
resolve();
406406
}
@@ -474,6 +474,20 @@ class IndexedDB extends CachingLayer {
474474
});
475475
}
476476

477+
static eventToError(evt: Event) : Error {
478+
const transaction = (evt?.target as IDBTransaction);
479+
let error = transaction?.error;
480+
if (error) {
481+
return error;
482+
} else {
483+
if (transaction?.db?.name) {
484+
return new Error(`error in store(s) “${transaction.objectStoreNames}” in database “${transaction.db.name}”`);
485+
} else {
486+
return new Error('unknown IndexedDB error')
487+
}
488+
}
489+
}
490+
477491
diffHandler() {
478492
// empty
479493
}

0 commit comments

Comments
 (0)