import 'dart:io'; import '../../core/utils/result.dart'; import '../models/downloaded_media.dart'; import '../models/post.dart'; import '../repositories/downloaded_media_repository.dart'; class DownloadedMediaService { DownloadedMediaService(this._repository); final DownloadedMediaRepository _repository; Future> markDownloaded( Post post, { required String savedPath, required String fileName, }) { return _repository.markDownloaded( post, savedPath: savedPath, fileName: fileName, ); } Future> getByCacheKey(String cacheKey) { return _repository.getByCacheKey(cacheKey); } Future>> allByKeys( Iterable cacheKeys, ) { return _repository.allByKeys(cacheKeys); } Future> deleteLocalFile(String cacheKey) async { final result = await getByCacheKey(cacheKey); if (result is Error) return Error(result.failure); final media = (result as Success).data; if (media != null && media.savedPath.isNotEmpty) { final file = File(media.savedPath); if (await file.exists()) { await file.delete(); } } return _repository.deleteRecord(cacheKey); } Future> clearMissingFiles() => _repository.clearMissingFiles(); Future> count() => _repository.count(); }