diff --git a/lib/services/merge_service.dart b/lib/services/merge_service.dart index f5e3cf4..a1ba062 100644 --- a/lib/services/merge_service.dart +++ b/lib/services/merge_service.dart @@ -96,6 +96,7 @@ class MergeService { static List _groupByTrainOrLoco(List records) { final List mergedRecords = []; + final List singleRecords = []; final Set usedRecordIds = {}; for (int i = 0; i < records.length; i++) { @@ -103,7 +104,6 @@ class MergeService { if (usedRecordIds.contains(record.uniqueId)) continue; final group = [record]; - usedRecordIds.add(record.uniqueId); for (int j = i + 1; j < records.length; j++) { final otherRecord = records[j]; @@ -137,11 +137,14 @@ class MergeService { if (trainMatch || locoMatch || (bothTrainEmpty && locoMatch)) { group.add(otherRecord); - usedRecordIds.add(otherRecord.uniqueId); } } if (group.length >= 2) { + for (final record in group) { + usedRecordIds.add(record.uniqueId); + } + final firstRecord = group.first; final train = firstRecord.train.trim(); final loco = firstRecord.loco.trim(); @@ -168,12 +171,12 @@ class MergeService { records: group, latestRecord: group.first, )); + } else { + singleRecords.add(record); + usedRecordIds.add(record.uniqueId); } } - final singleRecords = - records.where((r) => !usedRecordIds.contains(r.uniqueId)).toList(); - final List result = [...mergedRecords, ...singleRecords]; result.sort((a, b) { final aTime = a is MergedTrainRecord