@@ -4,45 +4,54 @@ import Config from './app.config.js'
4
4
import request from 'axios'
5
5
import localforage from 'localforage'
6
6
7
- request . defaults . baseURL = Config . wpDomain
7
+ // request.defaults.baseURL = Config.wpDomain
8
8
9
9
const cacheService = {
10
10
store : '' ,
11
11
storeCacheTime : '' ,
12
12
currentTime : '' ,
13
13
isBrowser : false ,
14
+ networkRequest : ( path , cacheTime , resolve , reject ) => {
15
+ cacheService
16
+ . networkFirstStrategy ( path , cacheTime )
17
+ . then ( response => resolve ( response ) )
18
+ . catch ( err => reject ( err ) )
19
+ } ,
14
20
networkFirstStrategy : ( path , cacheTime ) => {
15
21
return new Promise ( ( resolve , reject ) => {
16
22
request
17
23
. get ( path )
18
24
. then ( response => {
19
25
// Response returned, cache it and return it
20
26
if ( response . status === 200 ) {
21
- if ( cacheService . isBrowser ) {
22
- cacheService . storeCacheTime . setItem (
23
- path ,
24
- cacheService . currentTime + cacheTime
25
- )
26
- cacheService . store
27
- . setItem ( path , {
28
- data : response . data ,
29
- headers : response . headers
30
- } )
31
- . then ( response => resolve ( response ) )
32
- . catch ( err => reject ( err ) )
33
- } else {
27
+ if ( ! cacheService . isBrowser ) {
34
28
resolve ( response )
29
+ return
35
30
}
36
- } else {
37
- if ( cacheService . isBrowser ) {
38
- cacheService . store
39
- . getItem ( path )
40
- . then ( response => resolve ( response ) )
41
- . catch ( err => reject ( err ) )
42
- } else {
43
- reject ( new Error ( 'Cannot get ' + path ) )
44
- }
31
+ cacheService . storeCacheTime . setItem (
32
+ path ,
33
+ cacheService . currentTime + cacheTime
34
+ )
35
+ cacheService . store
36
+ . setItem ( path , {
37
+ data : response . data ,
38
+ headers : response . headers
39
+ } )
40
+ . then ( response => resolve ( response ) )
41
+ . catch ( err => reject ( err ) )
42
+
43
+ return
44
+ }
45
+
46
+ if ( ! cacheService . isBrowser ) {
47
+ reject ( new Error ( 'Cannot get ' + path ) )
48
+ return
45
49
}
50
+
51
+ cacheService . store
52
+ . getItem ( path )
53
+ . then ( response => resolve ( response ) )
54
+ . catch ( err => reject ( err ) )
46
55
} )
47
56
. catch ( error => {
48
57
console . log ( error )
@@ -56,52 +65,42 @@ const cacheService = {
56
65
. then ( function ( timeLastCached ) {
57
66
// Cache has expired
58
67
if ( timeLastCached < cacheService . currentTime ) {
59
- cacheService
60
- . networkFirstStrategy ( path , cacheTime )
61
- . then ( response => {
68
+ cacheService . networkRequest ( path , cacheTime , resolve , reject )
69
+
70
+ return
71
+ }
72
+
73
+ cacheService . store
74
+ . getItem ( path )
75
+ . then ( response => {
76
+ if ( response ) {
77
+ // Is in cache perfect!
62
78
resolve ( response )
63
- } )
64
- . catch ( err => reject ( err ) )
65
- } else {
66
- // Get item from cache
67
- cacheService . store
68
- . getItem ( path )
69
- . then ( response => {
70
- if ( response ) {
71
- // Is in cache perfect!
72
- resolve ( response )
73
- } else {
74
- // Doesn't exist in cache try network
75
- cacheService
76
- . networkFirstStrategy ( path , cacheTime )
77
- . then ( response => resolve ( response ) )
78
- . catch ( err => reject ( err ) )
79
- }
80
- } )
81
- . catch ( error => {
82
- console . log ( error )
79
+ } else {
83
80
// Doesn't exist in cache try network
84
- cacheService
85
- . networkFirstStrategy ( path , cacheTime )
86
- . then ( response => resolve ( response ) )
87
- . catch ( err => reject ( err ) )
88
- } )
89
- }
81
+ cacheService . networkRequest ( path , cacheTime , resolve , reject )
82
+ }
83
+ } )
84
+ . catch ( error => {
85
+ console . log ( error )
86
+ // Doesn't exist in cache try network
87
+ cacheService . networkRequest ( path , cacheTime , resolve , reject )
88
+ } )
90
89
} )
91
90
. catch ( error => {
92
91
console . log ( error )
93
92
// Doesn't exist in cache timeouts try network
94
- cacheService
95
- . networkFirstStrategy ( path , cacheTime )
96
- . then ( response => resolve ( response ) )
97
- . catch ( err => reject ( err ) )
93
+ cacheService . networkRequest ( path , cacheTime , resolve , reject )
98
94
} )
99
95
} )
100
96
} ,
101
97
get : function ( path , cacheTime ) {
98
+ // path = Config.wpDomain + path
99
+
102
100
return new Promise ( ( resolve , reject ) => {
103
101
cacheService . currentTime = Math . floor ( Date . now ( ) / 1000 )
104
102
cacheService . isBrowser = typeof window !== 'undefined'
103
+
105
104
if ( cacheService . isBrowser ) {
106
105
cacheService . store = localforage . createInstance ( {
107
106
name : Config . loadDbName
@@ -110,15 +109,12 @@ const cacheService = {
110
109
name : Config . loadDbName + '_cacheTime'
111
110
} )
112
111
}
112
+
113
113
if ( ! cacheTime || cacheTime === 0 ) {
114
114
cacheService
115
115
. networkFirstStrategy ( path , 0 )
116
116
. then ( response => {
117
- if ( ! response ) {
118
- resolve ( '' )
119
- } else {
120
- resolve ( response )
121
- }
117
+ resolve ( response || '' )
122
118
} )
123
119
. catch ( err => {
124
120
reject ( err )
@@ -127,11 +123,7 @@ const cacheService = {
127
123
cacheService
128
124
. offlineFirstStrategy ( path , cacheTime )
129
125
. then ( response => {
130
- if ( ! response ) {
131
- resolve ( '' )
132
- } else {
133
- resolve ( response )
134
- }
126
+ resolve ( response || '' )
135
127
} )
136
128
. catch ( err => reject ( err ) )
137
129
}
0 commit comments