1
1
import selfoss from './selfoss-base' ;
2
2
import { OfflineStorageNotAvailableError } from './errors' ;
3
- import Dexie from 'dexie' ;
3
+ import Dexie , {
4
+ PromiseExtended ,
5
+ Table ,
6
+ Transaction ,
7
+ TransactionMode ,
8
+ } from 'dexie' ;
4
9
import { OfflineDb } from './model/OfflineDb' ;
5
10
import { FilterType } from './Filter' ;
11
+ import dexie from 'dexie' ;
6
12
7
- const ENTRY_STATUS_NAMES = [ 'unread' , 'starred' ] ;
13
+ const ENTRY_STATUS_NAMES : Array < 'unread' | 'starred' > = [ 'unread' , 'starred' ] ;
8
14
9
15
export default class DbOffline {
10
16
/** @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 {
17
23
public olderEntriesOnline : boolean = false ;
18
24
public needsSync : boolean ;
19
25
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 ( ) ;
34
40
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
+ } ) ;
37
49
}
38
50
39
51
init ( ) {
0 commit comments