Skip to content

Commit 08e671d

Browse files
authored
Merge pull request #387 from mateussiqueira/bugfix/delete-not-cached-file
Bugfix/delete not cached file
2 parents fcea8d3 + 35085bf commit 08e671d

File tree

3 files changed

+115
-37
lines changed

3 files changed

+115
-37
lines changed

.gitignore

Lines changed: 68 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,57 +8,53 @@
88
.atom/
99
.buildlog/
1010
.history
11-
.project
1211
.svn/
13-
bin/
12+
devtools_options.yaml
13+
14+
# Environment files
15+
ios/Flutter/Dart-Defines.xcconfig
1416

1517
# IntelliJ related
1618
*.iml
1719
*.ipr
1820
*.iws
1921
.idea/
2022

21-
# Android Studio related
22-
android/.classpath
23-
android/.settings/
24-
2523
# Visual Studio Code related
26-
.vscode/
27-
28-
# Flutter repo-specific
29-
/bin/cache/
30-
/bin/mingit/
31-
/dev/benchmarks/mega_gallery/
32-
/dev/bots/.recipe_deps
33-
/dev/bots/android_tools/
34-
/dev/docs/doc/
35-
/dev/docs/lib/
36-
/dev/docs/pubspec.yaml
37-
/packages/flutter/coverage/
38-
version
24+
.classpath
25+
.project
26+
.settings/
27+
.vscode/*
28+
29+
# packages file containing multi-root paths
30+
.packages.generated
3931

4032
# Flutter/Dart/Pub related
4133
**/doc/api/
4234
.dart_tool/
4335
.flutter-plugins
36+
.flutter-plugins-dependencies
37+
**/generated_plugin_registrant.dart
4438
.packages
39+
.pub-preload-cache/
4540
.pub-cache/
4641
.pub/
4742
build/
4843
flutter_*.png
4944
linked_*.ds
5045
unlinked.ds
5146
unlinked_spec.ds
52-
flutter_export_environment.sh
5347

5448
# Android related
5549
**/android/**/gradle-wrapper.jar
56-
**/android/.gradle
50+
.gradle/
5751
**/android/captures/
5852
**/android/gradlew
5953
**/android/gradlew.bat
6054
**/android/local.properties
6155
**/android/**/GeneratedPluginRegistrant.java
56+
**/android/key.properties
57+
*.jks
6258

6359
# iOS/XCode related
6460
**/ios/**/*.mode1v3
@@ -77,20 +73,69 @@ flutter_export_environment.sh
7773
**/ios/**/profile
7874
**/ios/**/xcuserdata
7975
**/ios/.generated/
76+
**/ios/Flutter/.last_build_id
8077
**/ios/Flutter/App.framework
8178
**/ios/Flutter/Flutter.framework
79+
**/ios/Flutter/Flutter.podspec
8280
**/ios/Flutter/Generated.xcconfig
81+
**/ios/Flutter/ephemeral
8382
**/ios/Flutter/app.flx
8483
**/ios/Flutter/app.zip
8584
**/ios/Flutter/flutter_assets/
85+
**/ios/Flutter/flutter_export_environment.sh
8686
**/ios/ServiceDefinitions.json
8787
**/ios/Runner/GeneratedPluginRegistrant.*
8888

89+
# macOS
90+
**/Flutter/ephemeral/
91+
**/Pods/
92+
**/macos/Flutter/GeneratedPluginRegistrant.swift
93+
**/macos/Flutter/ephemeral
94+
**/xcuserdata/
95+
96+
# Windows
97+
**/windows/flutter/generated_plugin_registrant.cc
98+
**/windows/flutter/generated_plugin_registrant.h
99+
**/windows/flutter/generated_plugins.cmake
100+
101+
# Linux
102+
**/linux/flutter/generated_plugin_registrant.cc
103+
**/linux/flutter/generated_plugin_registrant.h
104+
**/linux/flutter/generated_plugins.cmake
105+
106+
# Coverage
107+
coverage/
108+
109+
# Submodules
110+
packages/**/pubspec.lock
111+
112+
# Web related
113+
lib/generated_plugin_registrant.dart
114+
115+
# Symbols
116+
app.*.symbols
117+
118+
# Obfuscation related
119+
app.*.map.json
120+
89121
# Exceptions to above rules.
90122
!**/ios/**/default.mode1v3
91123
!**/ios/**/default.mode2v3
92124
!**/ios/**/default.pbxuser
93125
!**/ios/**/default.perspectivev3
94126
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
95-
example/.flutter-plugins-dependencies
96-
flutter_cache_manager/example/ios/Flutter/.last_build_id
127+
!/dev/ci/**/Gemfile.lock
128+
!.vscode/settings.json
129+
!.vscode/tasks.json
130+
!.vscode/launch.json
131+
!.vscode/extensions.json
132+
!.idea/codeStyles/
133+
!.idea/dictionaries/
134+
!.idea/runConfigurations/
135+
136+
# Generated files
137+
**/generated
138+
*.g.dart
139+
140+
# Injection generated files
141+
injectable.config.dart

flutter_cache_manager/lib/src/cache_store.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22

33
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
4+
import 'dart:io' as io;
45
import 'package:flutter_cache_manager/src/storage/file_system/file_system.dart';
56

67
///Flutter Cache Manager
@@ -181,8 +182,9 @@ class CacheStore {
181182
if (_futureCache.containsKey(cacheObject.key)) {
182183
_futureCache.remove(cacheObject.key);
183184
}
184-
final file = await fileSystem.createFile(cacheObject.relativePath);
185-
if (await file.exists()) {
185+
final file = io.File(cacheObject.relativePath);
186+
187+
if (file.existsSync()) {
186188
await file.delete();
187189
}
188190
}

flutter_cache_manager/test/cache_store_test.dart

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,27 @@ import 'helpers/mock_cache_info_repository.dart';
1111
import 'helpers/test_configuration.dart';
1212

1313
void main() {
14+
late int fileId;
15+
late String fileName;
16+
late String fileUrl;
17+
late DateTime validTill;
18+
19+
late CacheObject cacheObject;
20+
21+
setUp(() {
22+
fileId = 666;
23+
fileName = 'testimage.png';
24+
fileUrl = 'baseflow.com/test.png';
25+
validTill = DateTime(2017, 9, 7, 17, 30);
26+
27+
cacheObject = CacheObject(
28+
fileUrl,
29+
relativePath: fileName,
30+
id: fileId,
31+
validTill: validTill,
32+
);
33+
});
34+
1435
group('Retrieving files from store', () {
1536
test('Store should return null when file not cached', () async {
1637
var repo = MockCacheInfoRepository();
@@ -21,9 +42,6 @@ void main() {
2142
});
2243

2344
test('Store should return FileInfo when file is cached', () async {
24-
var fileName = 'testimage.png';
25-
var fileUrl = 'baseflow.com/test.png';
26-
2745
var config = createTestConfig();
2846
await config.returnsFile(fileName);
2947
config.returnsCacheObject(fileUrl, fileName, DateTime.now());
@@ -36,6 +54,28 @@ void main() {
3654
expect(await store.getFile('baseflow.com/test.png'), isNotNull);
3755
});
3856

57+
test('Store should return null if file is not cached', () async {
58+
var config = createTestConfig();
59+
await config.returnsFile(fileName);
60+
config.returnsCacheObject(fileUrl, fileName, validTill,
61+
id: fileId, key: fileUrl);
62+
63+
var tempDir = createDir();
64+
await (await tempDir).childFile('testimage.png').create();
65+
66+
final store = CacheStore(config);
67+
68+
final results = Future.wait([
69+
store.removeCachedFile(cacheObject),
70+
store.removeCachedFile(cacheObject),
71+
]);
72+
73+
expect(
74+
() => results,
75+
returnsNormally,
76+
);
77+
});
78+
3979
test('Store should return null when file is no longer cached', () async {
4080
var repo = MockCacheInfoRepository();
4181

@@ -59,9 +99,6 @@ void main() {
5999
});
60100

61101
test('Store should return CacheInfo when file is cached', () async {
62-
var fileName = 'testimage.png';
63-
var fileUrl = 'baseflow.com/test.png';
64-
65102
var config = createTestConfig();
66103
await config.returnsFile(fileName);
67104
config.returnsCacheObject(fileUrl, fileName, DateTime.now(), id: 1);
@@ -74,8 +111,6 @@ void main() {
74111

75112
test('Store should return CacheInfo from memory when asked twice',
76113
() async {
77-
var fileName = 'testimage.png';
78-
var fileUrl = 'baseflow.com/test.png';
79114
var validTill = DateTime.now();
80115
var config = createTestConfig();
81116

@@ -96,8 +131,6 @@ void main() {
96131
test(
97132
'Store should return File from memcache only when file is retrieved before',
98133
() async {
99-
var fileName = 'testimage.png';
100-
var fileUrl = 'baseflow.com/test.png';
101134
var validTill = DateTime.now();
102135
var config = createTestConfig();
103136

@@ -172,8 +205,6 @@ void main() {
172205

173206
group('Removing files in store', () {
174207
test('Store should remove fileinfo from repo on delete', () async {
175-
var fileName = 'testimage.png';
176-
var fileUrl = 'baseflow.com/test.png';
177208
var validTill = DateTime.now();
178209
var config = createTestConfig();
179210

0 commit comments

Comments
 (0)