@@ -25,10 +25,13 @@ export default class CachedImage extends Component {
25
25
static defaultProps = {
26
26
expiration : 86400 * 7 , // default cache a week
27
27
activityIndicator : null , // default not show an activity indicator
28
+ defaultSource : require ( 'static/images/default.png' )
29
+
28
30
} ;
29
31
30
32
static cacheDir = RNFetchBlob . fs . dirs . CacheDir + "/CachedImage/" ;
31
33
34
+ static sameURL = [ ]
32
35
/**
33
36
* delete a cache file
34
37
* @param url
@@ -106,6 +109,12 @@ export default class CachedImage extends Component {
106
109
}
107
110
108
111
const cacheFile = _getCacheFilename ( url ) ;
112
+ if ( CachedImage . sameURL . includes ( cacheFile ) ) {
113
+
114
+ success && success ( cacheFile ) ;
115
+ return
116
+ }
117
+ CachedImage . sameURL . push ( cacheFile )
109
118
110
119
RNFetchBlob . fs . stat ( cacheFile )
111
120
. then ( ( stats ) => {
@@ -118,6 +127,8 @@ export default class CachedImage extends Component {
118
127
} )
119
128
. catch ( ( error ) => {
120
129
// not exist
130
+ // success && success(cacheFile)
131
+
121
132
_saveCacheFile ( url , success , failure ) ;
122
133
} ) ;
123
134
} ;
@@ -160,7 +171,7 @@ export default class CachedImage extends Component {
160
171
// cache failed use original source
161
172
if ( this . _mounted ) {
162
173
setTimeout ( ( ) => {
163
- this . setState ( { source : this . props . source } ) ;
174
+ this . setState ( { source : { uri : this . props . source } } ) ;
164
175
} , 0 ) ;
165
176
}
166
177
this . _downloading = false ;
@@ -190,6 +201,10 @@ export default class CachedImage extends Component {
190
201
if ( ! this . _useDefaultSource && this . props . defaultSource ) {
191
202
this . _useDefaultSource = true ;
192
203
setTimeout ( ( ) => {
204
+ if ( this . props . source && this . props . source . uri ) {
205
+ this . setState ( { source : this . props . source } ) ;
206
+ }
207
+ else
193
208
this . setState ( { source : this . props . defaultSource } ) ;
194
209
} , 0 ) ;
195
210
}
@@ -313,4 +328,4 @@ async function _saveCacheFile(url: string, success: Function, failure: Function)
313
328
} catch ( error ) {
314
329
failure && failure ( error ) ;
315
330
}
316
- }
331
+ }
0 commit comments