add method

  1. @override
Registration add(
  1. SnapshotPart part
)
override

Adds part. Throws a NameTakenException when its id is taken.

Implementation

@override
Registration add(SnapshotPart part) {
  if (_scope?.manifest case final manifest? when part.id != manifest.id) {
    if (manifest.nameProblem(part.id, what: 'the snapshot part')
        case final problem?) {
      throw PluginException(problem);
    }
  }
  if (_parts.any((existing) => existing.id == part.id)) {
    throw NameTakenException(part.id, what: 'the snapshot part');
  }
  _parts.add(part);
  final registration = Registration(() => _parts.remove(part));
  _scope?.track(registration);
  return registration;
}