diff --git a/lib/modules/more/data_and_storage/providers/storage_usage.dart b/lib/modules/more/data_and_storage/providers/storage_usage.dart index fa8fc1eb..a19b4efe 100644 --- a/lib/modules/more/data_and_storage/providers/storage_usage.dart +++ b/lib/modules/more/data_and_storage/providers/storage_usage.dart @@ -5,8 +5,6 @@ import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/router/router.dart'; -import 'package:path/path.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'storage_usage.g.dart'; @@ -21,28 +19,19 @@ class TotalChapterCacheSizeState extends _$TotalChapterCacheSizeState { return "0.00 B"; } - final String _cacheImageMangaPath = join('Mangayomi', 'cacheimagemanga'); - final String _cacheDownloadPath = join('Mangayomi', 'downloads'); + final _storage = StorageProvider(); Future clearCache({bool showToast = true}) async { - final tempPath = (await getTemporaryDirectory()).path; String? msg; try { - final dir = Directory(join(tempPath, _cacheImageMangaPath)); + final dir = await _storage.getCacheDirectory('cacheimagemanga'); if (dir.existsSync()) { await dir.delete(recursive: true); } msg = "0.00 B"; } catch (_) {} try { - final dir = Directory(join(tempPath, _cacheDownloadPath)); - if (dir.existsSync()) { - await dir.delete(recursive: true); - } - msg = "0.00 B"; - } catch (_) {} - try { - await StorageProvider().deleteTmpDirectory(); + await _storage.deleteTmpDirectory(); } catch (_) {} if (msg != null && showToast) { state = msg; @@ -53,14 +42,10 @@ class TotalChapterCacheSizeState extends _$TotalChapterCacheSizeState { } Future _getTotalDiskSpace() async { - final tempPath = (await getTemporaryDirectory()).path; try { return await _getdirectorySize( - Directory(join(tempPath, _cacheImageMangaPath)), - ) + - await _getdirectorySize( - Directory(join(tempPath, _cacheDownloadPath)), - ); + await _storage.getCacheDirectory('cacheimagemanga'), + ); } catch (_) {} return 0; } diff --git a/lib/modules/widgets/custom_extended_image_provider.dart b/lib/modules/widgets/custom_extended_image_provider.dart index 43c96938..f47bd838 100644 --- a/lib/modules/widgets/custom_extended_image_provider.dart +++ b/lib/modules/widgets/custom_extended_image_provider.dart @@ -10,7 +10,6 @@ import 'package:http_client_helper/http_client_helper.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/services/http/m_client.dart'; import 'package:path/path.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:extended_image_library/src/network/extended_network_image_provider.dart' as image_provider; @@ -214,7 +213,7 @@ class CustomExtendedNetworkImageProvider @override final bool printError; - /// The max duration to cahce image. + /// The max duration to cache image. /// After this time the cache is expired and the image is reloaded. @override final Duration? cacheMaxAge; @@ -317,15 +316,9 @@ class CustomExtendedNetworkImageProvider return cachedData; } - final Directory cacheImagesDirectory = Directory( - join( - (await getTemporaryDirectory()).path, - 'Mangayomi', - imageCacheFolderName ?? 'cacheimagecover', - ), - ); + final Directory cacheImagesDirectory = await StorageProvider() + .createCacheDirectory(imageCacheFolderName); Uint8List? data; - await StorageProvider().createDirectorySafely(cacheImagesDirectory.path); final File cacheFile = File(join(cacheImagesDirectory.path, md5Key)); // exist, try to find cache image file diff --git a/lib/providers/storage_provider.dart b/lib/providers/storage_provider.dart index 9c6aac07..45e626db 100644 --- a/lib/providers/storage_provider.dart +++ b/lib/providers/storage_provider.dart @@ -86,6 +86,20 @@ class StorageProvider { return Directory(tmpPath); } + Future getCacheDirectory(String? imageCacheFolderName) async { + final cacheImagesDirectory = path.join( + (await getApplicationCacheDirectory()).path, + imageCacheFolderName ?? 'cacheimagecover', + ); + return Directory(cacheImagesDirectory); + } + + Future createCacheDirectory(String? imageCacheFolderName) async { + final cachePath = await getCacheDirectory(imageCacheFolderName); + await createDirectorySafely(cachePath.path); + return cachePath; + } + Future _tempDirectoryPath() async { final defaultDirectory = await getDirectory(); return path.join(defaultDirectory!.path, 'tmp'); diff --git a/lib/utils/extensions/others.dart b/lib/utils/extensions/others.dart index 85242453..e57a5638 100644 --- a/lib/utils/extensions/others.dart +++ b/lib/utils/extensions/others.dart @@ -10,10 +10,9 @@ import 'package:intl/intl.dart'; import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; +import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/utils/headers.dart'; import 'package:mangayomi/utils/reg_exp_matcher.dart'; -import 'package:path/path.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:path/path.dart' as p; extension FileFormatter on num { @@ -144,13 +143,8 @@ extension UChapDataPreloadExtensions on UChapDataPreload { Future _getCachedImageFile(String url, {String? cacheKey}) async { try { final String key = cacheKey ?? keyToMd5(url); - final Directory cacheImagesDirectory = Directory( - join( - (await getTemporaryDirectory()).path, - 'Mangayomi', - 'cacheimagemanga', - ), - ); + final Directory cacheImagesDirectory = await StorageProvider() + .getCacheDirectory('cacheimagemanga'); if (cacheImagesDirectory.existsSync()) { await for (final FileSystemEntity file in cacheImagesDirectory.list()) { if (file.path.endsWith(key)) {