@@ -263,22 +263,15 @@ export default class DownloadQueue {
263
263
}
264
264
265
265
// Delete any files that don't have a spec
266
- const orphanedFiles = dirFilenames . filter (
267
- filename => ! this . specs . some ( spec => spec . id === filename )
266
+ const orphanedFiles = dirFilenames . map ( splitFilenameFromExtension ) . filter (
267
+ // Remember that spec.id doesn't have an extension! So use basename.
268
+ ( [ basename ] ) => ! this . specs . some ( spec => spec . id === basename )
268
269
) ;
269
270
if ( orphanedFiles . length ) {
270
271
await Promise . all (
271
- orphanedFiles . map ( filename => {
272
+ orphanedFiles . map ( ( [ basename , ext ] ) => {
272
273
try {
273
- const parts = filename . split ( "." ) ;
274
-
275
- if ( parts . length > 1 ) {
276
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
277
- const extension = parts . pop ( ) ! ;
278
-
279
- return RNFS . unlink ( this . pathFromId ( parts . join ( "." ) , extension ) ) ;
280
- }
281
- return RNFS . unlink ( this . pathFromId ( filename , "" ) ) ;
274
+ return RNFS . unlink ( this . pathFromId ( basename , ext ) ) ;
282
275
} catch {
283
276
// Ignore errors
284
277
}
@@ -910,6 +903,18 @@ export default class DownloadQueue {
910
903
}
911
904
}
912
905
906
+ function splitFilenameFromExtension ( filename : string ) : [ string , string ] {
907
+ const parts = filename . split ( "." ) ;
908
+
909
+ if ( parts . length > 1 ) {
910
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
911
+ const extension = parts . pop ( ) ! ;
912
+
913
+ return [ parts . join ( "." ) , extension ] ;
914
+ }
915
+ return [ filename , "" ] ;
916
+ }
917
+
913
918
function roundToNextMinute ( timestamp : number ) {
914
919
return Math . ceil ( timestamp / 60000 ) * 60000 ;
915
920
}
0 commit comments