diff --git a/mobile/apps/photos/lib/db/files_db.dart b/mobile/apps/photos/lib/db/files_db.dart index 1957f55179..265ac06e06 100644 --- a/mobile/apps/photos/lib/db/files_db.dart +++ b/mobile/apps/photos/lib/db/files_db.dart @@ -1000,20 +1000,33 @@ class FilesDB with SqlDbBase { final batch = localIDsList.sublist(i, endIndex); final placeholders = List.filled(batch.length, '?').join(','); + final List alreadyUploaded = []; + // find localIDs that are already uploaded + final result = await db.execute(''' + SELECT DISTINCT $columnLocalID + FROM $filesTable + WHERE $columnLocalID IN ($placeholders) + AND ($columnUploadedFileID IS NOT NULL AND $columnUploadedFileID != -1) +'''); + for (final row in result) { + alreadyUploaded.add(row[columnLocalID] as String); + } + final uploadedPlaceholders = + alreadyUploaded.map((id) => "'$id'").join(','); final r = await db.execute( ''' DELETE FROM $filesTable - WHERE $columnLocalID IN ($placeholders) - AND ($columnCollectionID IS NULL OR $columnCollectionID = -1) + WHERE $columnLocalID IN ($uploadedPlaceholders) AND ($columnUploadedFileID IS NULL OR $columnUploadedFileID = -1) ''', batch, ); if (r.isNotEmpty) { - _logger - .fine("Batch ${(i ~/ batchSize) + 1}: Removed ${r.length} files"); + _logger.warning( + "Batch ${(i ~/ batchSize) + 1}: Removed duplicate ${r.length} files", + ); totalRemoved += r.length; } } diff --git a/mobile/apps/photos/scripts/internal_changes.txt b/mobile/apps/photos/scripts/internal_changes.txt index 82485723c3..3c48d3392a 100644 --- a/mobile/apps/photos/scripts/internal_changes.txt +++ b/mobile/apps/photos/scripts/internal_changes.txt @@ -1,3 +1,4 @@ +- Neeraj: Fix for double enteries for local file - (prtk) Fix widget initial launch on iOS - (prtk) Upgrade Flutter version to 3.32.8 - (prtk) Run FFMpeg in an isolate