Sync collections after uploads

This commit is contained in:
Vishnu Mohandas 2020-12-04 03:49:25 +05:30
parent 3b138aa6f4
commit ae924a52ee

View file

@ -40,7 +40,7 @@ class SyncService {
SyncStatusUpdate _lastSyncStatusEvent;
static final _dbUpdationTimeKey = "db_updation_time";
static final _diffLimit = 100;
static final _diffLimit = 200;
SyncService._privateConstructor() {
Bus.instance.on<UserAuthenticatedEvent>().listen((event) {
@ -187,7 +187,13 @@ class SyncService {
await _fetchEncryptedFilesDiff(collection.id);
}
await deleteFilesOnServer();
await _uploadDiff();
bool hasUploadedFiles = await _uploadDiff();
if (hasUploadedFiles) {
final updatedCollections = await _collectionsService.sync();
for (final collection in updatedCollections) {
await _fetchEncryptedFilesDiff(collection.id);
}
}
}
Future<void> _fetchEncryptedFilesDiff(int collectionID) async {
@ -207,7 +213,7 @@ class SyncService {
}
}
Future<void> _uploadDiff() async {
Future<bool> _uploadDiff() async {
final foldersToBackUp = Configuration.instance.getPathsToBackUp();
final filesToBeUploaded =
await _db.getFilesToBeUploadedWithinFolders(foldersToBackUp);
@ -231,7 +237,7 @@ class SyncService {
_syncStopRequested = false;
Bus.instance
.fire(SyncStatusUpdate(SyncStatus.completed, wasStopped: true));
return;
return false;
}
final file = await _db.getUploadedFileInAnyCollection(uploadedFileID);
final future = _uploader.upload(file, file.collectionID).then((value) {
@ -249,7 +255,7 @@ class SyncService {
_syncStopRequested = false;
Bus.instance
.fire(SyncStatusUpdate(SyncStatus.completed, wasStopped: true));
return;
return false;
}
final collectionID = (await CollectionsService.instance
.getOrCreateForPath(file.deviceFolder))
@ -274,6 +280,7 @@ class SyncService {
Bus.instance.fire(SyncStatusUpdate(SyncStatus.error));
_logger.severe("Error in syncing files", e, s);
}
return uploadCounter > 0;
}
Future _storeDiff(List<File> diff, int collectionID) async {