batch files to batch of 1000s on move()

This commit is contained in:
ashilkn 2022-11-17 14:44:01 +05:30
parent 107e7c552b
commit 6c882d233e

View file

@ -21,6 +21,7 @@ import 'package:photos/events/collection_updated_event.dart';
import 'package:photos/events/files_updated_event.dart';
import 'package:photos/events/force_reload_home_gallery_event.dart';
import 'package:photos/events/local_photos_updated_event.dart';
import 'package:photos/extensions/list.dart';
import 'package:photos/extensions/stop_watch.dart';
import 'package:photos/models/api/collection/create_request.dart';
import 'package:photos/models/collection.dart';
@ -850,26 +851,31 @@ class CollectionsService {
params["toCollectionID"] = toCollectionID;
params["fromCollectionID"] = fromCollectionID;
params["files"] = [];
for (final file in files) {
final fileKey = decryptFileKey(file);
file.generatedID = null; // So that a new entry is created in the FilesDB
file.collectionID = toCollectionID;
final encryptedKeyData =
CryptoUtil.encryptSync(fileKey, getCollectionKey(toCollectionID));
file.encryptedKey = Sodium.bin2base64(encryptedKeyData.encryptedData);
file.keyDecryptionNonce = Sodium.bin2base64(encryptedKeyData.nonce);
params["files"].add(
CollectionFileItem(
file.uploadedFileID,
file.encryptedKey,
file.keyDecryptionNonce,
).toMap(),
final batchedFiles = files.chunks(1000);
for (final batch in batchedFiles) {
for (final file in batch) {
final fileKey = decryptFileKey(file);
file.generatedID =
null; // So that a new entry is created in the FilesDB
file.collectionID = toCollectionID;
final encryptedKeyData =
CryptoUtil.encryptSync(fileKey, getCollectionKey(toCollectionID));
file.encryptedKey = Sodium.bin2base64(encryptedKeyData.encryptedData);
file.keyDecryptionNonce = Sodium.bin2base64(encryptedKeyData.nonce);
params["files"].add(
CollectionFileItem(
file.uploadedFileID,
file.encryptedKey,
file.keyDecryptionNonce,
).toMap(),
);
}
await _enteDio.post(
"/collections/move-files",
data: params,
);
params["files"] = [];
}
await _enteDio.post(
"/collections/move-files",
data: params,
);
// remove files from old collection
await _filesDB.removeFromCollection(