11import selfoss from './selfoss-base' ;
22import { OfflineStorageNotAvailableError } from './errors' ;
3- import Dexie from 'dexie' ;
3+ import Dexie , {
4+ PromiseExtended ,
5+ Table ,
6+ Transaction ,
7+ TransactionMode ,
8+ } from 'dexie' ;
49import { OfflineDb } from './model/OfflineDb' ;
510import { FilterType } from './Filter' ;
11+ import dexie from 'dexie' ;
612
7- const ENTRY_STATUS_NAMES = [ 'unread' , 'starred' ] ;
13+ const ENTRY_STATUS_NAMES : Array < 'unread' | 'starred' > = [ 'unread' , 'starred' ] ;
814
915export default class DbOffline {
1016 /** @var Date the datetime of the newest garbage collected entry, i.e. deleted because not of interest. */
@@ -17,23 +23,29 @@ export default class DbOffline {
1723 public olderEntriesOnline : boolean = false ;
1824 public needsSync : boolean ;
1925
20- _tr ( ... args ) {
21- return selfoss . db . storage . transaction ( ... args ) . catch ( ( error ) => {
22- selfoss . app . showError (
23- selfoss . app . _ ( 'error_offline_storage' , [ error . message ] ) ,
24- ) ;
25- selfoss . db . broken = true ;
26- selfoss . db . enableOffline . update ( false ) ;
27- selfoss . entries ?. reload ( ) ;
28-
29- // If this is a QuotaExceededError, garbage collect more
30- // entries and hope it helps.
31- if ( error . name === Dexie . errnames . QuotaExceeded ) {
32- this . GCEntries ( true ) ;
33- }
26+ _tr < U > (
27+ mode : TransactionMode ,
28+ tables : Table [ ] ,
29+ scope : ( trans : Transaction ) => PromiseLike < U > | U ,
30+ ) : PromiseExtended < U > {
31+ return selfoss . db . storage
32+ . transaction ( mode , tables , scope )
33+ . catch ( ( error ) => {
34+ selfoss . app . showError (
35+ selfoss . app . _ ( 'error_offline_storage' , [ error . message ] ) ,
36+ ) ;
37+ selfoss . db . broken = true ;
38+ selfoss . db . enableOffline . update ( false ) ;
39+ selfoss . entries ?. reload ( ) ;
3440
35- return Promise . reject ( error ) ;
36- } ) ;
41+ // If this is a QuotaExceededError, garbage collect more
42+ // entries and hope it helps.
43+ if ( error . name === Dexie . errnames . QuotaExceeded ) {
44+ this . GCEntries ( true ) ;
45+ }
46+
47+ return Promise . reject ( error ) ;
48+ } ) ;
3749 }
3850
3951 init ( ) {
0 commit comments