From 679c12bb908c8055f280b04aea0fbad281f6dbe5 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Mon, 3 Mar 2025 11:21:11 +0530 Subject: [PATCH] Remove recursion --- .../lib/services/remote_pull/remote_pull.dart | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/mobile/lib/services/remote_pull/remote_pull.dart b/mobile/lib/services/remote_pull/remote_pull.dart index bb2dde2781..2d2ece004b 100644 --- a/mobile/lib/services/remote_pull/remote_pull.dart +++ b/mobile/lib/services/remote_pull/remote_pull.dart @@ -63,23 +63,26 @@ class RemoteDiffService { } final Uint8List collectionKey = _collectionsService.getCollectionKey(collectionID); - final diff = await collectionFiles.getCollectionItemsDiff( - collectionID, - sinceTime, - collectionKey, - ); - await remoteDB.deleteCollectionFilesDiff(diff.deletedItems); - await remoteDB.insertCollectionFilesDiff(diff.updatedItems); - await _collectionsService.setCollectionSyncTime( - collectionID, - max(diff.maxUpdatedAtTime, sinceTime), - ); - _logger.fine("[Collection-$collectionID] synced $diff"); - if (diff.hasMore) { - return await _syncCollectionFiles( + int currentSinceTime = sinceTime; + bool hasMore = true; + while (hasMore) { + final diff = await collectionFiles.getCollectionItemsDiff( collectionID, - _collectionsService.getCollectionSyncTime(collectionID), + currentSinceTime, + collectionKey, ); + await remoteDB.deleteCollectionFilesDiff(diff.deletedItems); + await remoteDB.insertCollectionFilesDiff(diff.updatedItems); + final int nextSyncFrom = max(diff.maxUpdatedAtTime, currentSinceTime); + await _collectionsService.setCollectionSyncTime( + collectionID, + nextSyncFrom, + ); + _logger.fine("[Collection-$collectionID] synced $diff"); + hasMore = diff.hasMore; + if (hasMore) { + currentSinceTime = nextSyncFrom; + } } } }