addArtifacts method
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);
}
}