diff --git a/mobile/lib/shared/services/sync.service.dart b/mobile/lib/shared/services/sync.service.dart index 50b96319db6f9..08025ed7106d5 100644 --- a/mobile/lib/shared/services/sync.service.dart +++ b/mobile/lib/shared/services/sync.service.dart @@ -785,15 +785,20 @@ class SyncService { bool? remote, int Function(Asset, Asset) compare = Asset.compareByChecksum, }) { + // fast paths for trivial cases: reduces memory usage during initial sync etc. + if (assets.isEmpty && inDb.isEmpty) { + return const ([], [], []); + } else if (assets.isEmpty && remote == null) { + // remove all from database + return (const [], const [], inDb); + } else if (inDb.isEmpty) { + // add all assets + return (assets, const [], const []); + } + final List toAdd = []; final List toUpdate = []; final List toRemove = []; - if (assets.isEmpty || inDb.isEmpty) { - // fast path for trivial cases: halfes memory usage during initial sync - return assets.isEmpty - ? (toAdd, toUpdate, inDb) // remove all from DB - : (assets, toUpdate, toRemove); // add all assets - } diffSortedListsSync( inDb, assets,