diff --git a/lib/db/files_db.dart b/lib/db/files_db.dart index f9593d02a..8005ed1a4 100644 --- a/lib/db/files_db.dart +++ b/lib/db/files_db.dart @@ -9,6 +9,7 @@ import 'package:photos/models/file_load_result.dart'; import 'package:photos/models/file_type.dart'; import 'package:photos/models/location.dart'; import 'package:photos/models/magic_metadata.dart'; +import 'package:photos/services/ignored_files_service.dart'; import 'package:sqflite/sqflite.dart'; import 'package:sqflite_migration/sqflite_migration.dart'; @@ -433,7 +434,9 @@ class FilesDB { limit: limit, ); final files = _convertToFiles(results); - return FileLoadResult(files, files.length == limit); + final hasMore = files.length == limit; + await _removeLocalIgnoredFiles(files); + return FileLoadResult(files, hasMore); } Future getImportantFiles( @@ -457,8 +460,17 @@ class FilesDB { limit: limit, ); final files = _convertToFiles(results); + final hasMore = files.length == limit; List deduplicatedFiles = _deduplicatedFiles(files); - return FileLoadResult(deduplicatedFiles, files.length == limit); + await _removeLocalIgnoredFiles(deduplicatedFiles); + return FileLoadResult(deduplicatedFiles, hasMore); + } + + Future _removeLocalIgnoredFiles(List files) async { + final ignoredIDs = await IgnoredFilesService.instance.ignoredIDs; + files.removeWhere((f) => + f.uploadedFileID == null && + IgnoredFilesService.instance.shouldSkipUpload(ignoredIDs, f)); } List _deduplicatedFiles(List files) { diff --git a/lib/services/ignored_files_service.dart b/lib/services/ignored_files_service.dart index b9729ab40..7144e22b0 100644 --- a/lib/services/ignored_files_service.dart +++ b/lib/services/ignored_files_service.dart @@ -41,6 +41,7 @@ class IgnoredFilesService { } Future> _loadExistingIDs() async { + _logger.fine('loading existing IDs'); final result = await _db.getAll(); return result.map((e) => _iDForIgnoredFile(e)).toSet(); }