CircleUpdates.update constructor

CircleUpdates.update(
  1. Set<Circle> previous,
  2. Set<Circle> current
)

Implementation

CircleUpdates.update(Set<Circle> previous, Set<Circle> current) {
  final Map<CircleId, Circle> oldCircles = circleToMap(previous);
  final Map<CircleId, Circle> currCircles = circleToMap(current);

  final Set<CircleId> oldIds = oldCircles.keys.toSet();
  final Set<CircleId> currIds = currCircles.keys.toSet();

  final Set<CircleId> _toDelete = oldIds.difference(currIds);

  final Set<Circle> _toInsert = Set<Circle>.from(
      currIds.difference(oldIds).map((id) => currCircles[id]).toSet());

  final Set<Circle> _toUpdate = Set<Circle>.from(currIds
      .intersection(oldIds)
      .map((id) => currCircles[id])
      .where((x) => isChanged(x!, oldCircles))
      .toSet());

  insertSet = _toInsert;
  deleteSet = _toDelete;
  updateSet = _toUpdate;
}