|
@@ -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<Asset> toAdd = [];
|
|
|
final List<Asset> toUpdate = [];
|
|
|
final List<Asset> 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,
|