This commit is contained in:
Neeraj Gupta
2025-04-30 15:50:31 +05:30
parent 52e0f04ec2
commit 7489821434
4 changed files with 21 additions and 17 deletions

View File

@@ -825,6 +825,7 @@ class FilesDB with SqlDbBase {
return files;
}
// todo:rewrite (upload related)
Future<List<int>> getUploadedFileIDsToBeUpdated(int ownerID) async {
final db = await instance.sqliteAsyncDB;
final rows = await db.getAll(
@@ -841,6 +842,7 @@ class FilesDB with SqlDbBase {
return uploadedFileIDs;
}
// todo:rewrite (upload related)
Future<List<EnteFile>> getFilesInAllCollection(
int uploadedFileID,
int userID,
@@ -1102,15 +1104,6 @@ class FilesDB with SqlDbBase {
);
}
Future<void> deleteMultipleUploadedFiles(List<int> uploadedFileIDs) async {
final db = await instance.sqliteAsyncDB;
final inParam = uploadedFileIDs.join(',');
await db.execute(
'DELETE FROM $filesTable WHERE $columnUploadedFileID IN ($inParam)',
);
}
// todo: neeraj (rw, upload flow)
Future<void> deleteMultipleByGeneratedIDs(List<int> generatedIDs) async {
if (generatedIDs.isEmpty) {
@@ -1145,7 +1138,7 @@ class FilesDB with SqlDbBase {
}
}
Future<void> deleteLocalFiles(List<String> localIDs) async {
Future<void> markLocalIDAsNull(List<String> localIDs) async {
final inParam = localIDs.map((id) => "'$id'").join(',');
final db = await instance.sqliteAsyncDB;
await db.execute(

View File

@@ -1,3 +1,4 @@
import "package:flutter/foundation.dart";
import "package:photos/db/remote/db.dart";
import "package:photos/db/remote/schema.dart";
import "package:photos/extensions/stop_watch.dart";
@@ -105,6 +106,17 @@ extension CollectionFiles on RemoteDB {
return null;
}
Future<void> deleteFiles(List<int> fileIDs) async {
if (fileIDs.isEmpty) return;
final stopwatch = Stopwatch()..start();
await sqliteDB.execute(
"DELETE FROM collection_files WHERE file_id IN (${fileIDs.join(",")})",
);
debugPrint(
'$runtimeType deleteFiles complete in ${stopwatch.elapsed.inMilliseconds}ms for ${fileIDs.length}',
);
}
Future<Map<int, int>> getCollectionIDToMaxCreationTime() async {
final enteWatch = EnteWatch("getCollectionIDToMaxCreationTime")..start();
final rows = await sqliteDB.getAll(

View File

@@ -7,6 +7,7 @@ import "package:ente_crypto/ente_crypto.dart";
import 'package:logging/logging.dart';
import 'package:photos/core/constants.dart';
import 'package:photos/core/event_bus.dart';
import "package:photos/db/remote/table/collection_files.dart";
import 'package:photos/db/trash_db.dart';
import 'package:photos/events/collection_updated_event.dart';
import 'package:photos/events/force_reload_trash_page_event.dart';
@@ -17,6 +18,7 @@ import 'package:photos/models/file/file.dart';
import 'package:photos/models/file/trash_file.dart';
import 'package:photos/models/ignored_file.dart';
import "package:photos/models/metadata/file_magic.dart";
import "package:photos/service_locator.dart";
import 'package:photos/services/ignored_files_service.dart';
import "package:photos/utils/file_key.dart";
import 'package:shared_preferences/shared_preferences.dart';
@@ -123,6 +125,7 @@ class TrashSyncService {
}
await _trashFiles(requestData);
}
await remoteDB.deleteFiles(includedFileIDs.toList());
}
Future<TrashDiff> getTrashFilesDiff(int sinceTime) async {

View File

@@ -99,10 +99,7 @@ Future<void> deleteFilesFromEverywhere(
}
if (uploadedFilesToBeTrashed.isNotEmpty) {
try {
final fileIDs =
uploadedFilesToBeTrashed.map((item) => item.fileID).toList();
await trashSyncService.trashFilesOnServer(uploadedFilesToBeTrashed);
await FilesDB.instance.deleteMultipleUploadedFiles(fileIDs);
} catch (e) {
_logger.severe(e);
await showGenericErrorDialog(context: context, error: e);
@@ -164,7 +161,6 @@ Future<void> deleteFilesFromRemoteOnly(
}
try {
await trashSyncService.trashFilesOnServer(trashRequests);
await FilesDB.instance.deleteMultipleUploadedFiles(uploadedFileIDs);
} catch (e, s) {
_logger.severe("Failed to delete files from remote", e, s);
await showGenericErrorDialog(context: context, error: e);
@@ -367,7 +363,7 @@ Future<bool> deleteLocalFiles(
if (deletedIDs.isNotEmpty) {
final deletedFiles = await FilesDB.instance.getLocalFiles(deletedIDs);
await FilesDB.instance.deleteLocalFiles(deletedIDs);
await FilesDB.instance.markLocalIDAsNull(deletedIDs);
_logger.info(deletedFiles.length.toString() + " files deleted locally");
Bus.instance.fire(
LocalPhotosUpdatedEvent(deletedFiles, source: "deleteLocal"),
@@ -445,7 +441,7 @@ Future<bool> deleteLocalFilesAfterRemovingAlreadyDeletedIDs(
if (deletedIDs.isNotEmpty) {
final deletedFiles = await FilesDB.instance.getLocalFiles(deletedIDs);
await FilesDB.instance.deleteLocalFiles(deletedIDs);
await FilesDB.instance.markLocalIDAsNull(deletedIDs);
_logger.info(deletedFiles.length.toString() + " files deleted locally");
Bus.instance.fire(
LocalPhotosUpdatedEvent(deletedFiles, source: "deleteLocal"),
@@ -520,7 +516,7 @@ Future<bool> retryFreeUpSpaceAfterRemovingAssetsNonExistingInDisk(
if (deletedIDs.isNotEmpty) {
final deletedFiles = await FilesDB.instance.getLocalFiles(deletedIDs);
await FilesDB.instance.deleteLocalFiles(deletedIDs);
await FilesDB.instance.markLocalIDAsNull(deletedIDs);
_logger.info(deletedFiles.length.toString() + " files deleted locally");
Bus.instance.fire(
LocalPhotosUpdatedEvent(deletedFiles, source: "deleteLocal"),