merge method

  1. @override
ORSet<T> merge(
  1. covariant ORSet<T> other
)
override

Merges this CRDT with another of the same type.

Implementation

@override
ORSet<T> merge(covariant ORSet<T> other) {
  final mergedAdd = Map<T, Set<String>>.from(_addSet.map((k, v) => MapEntry(k, Set<String>.from(v))));
  other._addSet.forEach((k, v) {
    mergedAdd[k] = (mergedAdd[k] ?? {})..addAll(v);
  });

  final mergedRemove = Map<T, Set<String>>.from(_removeSet.map((k, v) => MapEntry(k, Set<String>.from(v))));
  other._removeSet.forEach((k, v) {
    mergedRemove[k] = (mergedRemove[k] ?? {})..addAll(v);
  });

  return ORSet(addSet: mergedAdd, removeSet: mergedRemove);
}