addArtifacts method

void addArtifacts(
  1. List<Artifact> artifacts
)

Adds artifacts to the session, deduplicating items by name.

Emits 'artifactAdded' for new artifacts and 'artifactUpdated' for replacements.

Implementation

void addArtifacts(List<Artifact> artifacts) {
  final existing = (_json['artifacts'] as List?)?.toList() ?? [];
  final added = <Artifact>[];
  final updated = <Artifact>[];

  for (final a in artifacts) {
    final name = a.name;
    if (name != null) {
      final idx = existing.indexWhere(
        (e) => (e as Map<String, dynamic>)['name'] == name,
      );
      if (idx >= 0) {
        existing[idx] = a.toJson();
        updated.add(a);
        continue;
      }
    }
    existing.add(a.toJson());
    added.add(a);
  }

  _json['artifacts'] = existing;
  if (added.isNotEmpty || updated.isNotEmpty) {
    _version++;
  }
  for (final a in added) {
    _emit('artifactAdded', a);
  }
  for (final a in updated) {
    _emit('artifactUpdated', a);
  }
}