Ignore files starting with a dot when fetching local comic images, and improve local comic delete logic.

This commit is contained in:
pkuislm
2024-11-12 19:48:15 +08:00
parent abd9afad6b
commit 389403c11d

View File

@@ -5,6 +5,7 @@ import 'package:path_provider/path_provider.dart';
import 'package:sqlite3/sqlite3.dart'; import 'package:sqlite3/sqlite3.dart';
import 'package:venera/foundation/comic_source/comic_source.dart'; import 'package:venera/foundation/comic_source/comic_source.dart';
import 'package:venera/foundation/comic_type.dart'; import 'package:venera/foundation/comic_type.dart';
import 'package:venera/foundation/favorites.dart';
import 'package:venera/foundation/log.dart'; import 'package:venera/foundation/log.dart';
import 'package:venera/network/download.dart'; import 'package:venera/network/download.dart';
import 'package:venera/pages/reader/reader.dart'; import 'package:venera/pages/reader/reader.dart';
@@ -346,6 +347,10 @@ class LocalManager with ChangeNotifier {
comic.cover) { comic.cover) {
continue; continue;
} }
//Hidden file in some file system
if(entity.name.startsWith('.')) {
continue;
}
files.add(entity); files.add(entity);
} }
} }
@@ -439,9 +444,20 @@ class LocalManager with ChangeNotifier {
downloadingTasks.first.resume(); downloadingTasks.first.resume();
} }
void deleteComic(LocalComic c) { void deleteComic(LocalComic c, [bool removeFileOnDisk = true]) {
var dir = Directory(FilePath.join(path, c.directory)); if(removeFileOnDisk) {
dir.deleteIgnoreError(recursive: true); var dir = Directory(FilePath.join(path, c.directory));
dir.deleteIgnoreError(recursive: true);
}
//Deleting a local comic means that it's nolonger available, thus both favorite and history should be deleted.
if(HistoryManager().findSync(c.id, c.comicType) != null) {
HistoryManager().remove(c.id, c.comicType);
}
assert(c.comicType == ComicType.local);
var folders = LocalFavoritesManager().find(c.id, c.comicType);
for (var f in folders) {
LocalFavoritesManager().deleteComicWithId(f, c.id, c.comicType);
}
remove(c.id, c.comicType); remove(c.id, c.comicType);
notifyListeners(); notifyListeners();
} }