SoftwareRelease.fromEvent constructor
SoftwareRelease.fromEvent(
- Nip01Event event
Implementation
factory SoftwareRelease.fromEvent(Nip01Event event) {
if (event.kind != softwareReleaseKind) {
throw SoftwareParseException('expected kind $softwareReleaseKind');
}
final identifier = _requiredTag(event, 'i');
final version = _requiredTag(event, 'version');
if (_requiredTag(event, 'd') != '$identifier@$version') {
throw const SoftwareParseException('release d tag must equal i@version');
}
final assets = event.tags
.where((tag) => tag.length > 1 && tag.first == 'e' && tag[1].isNotEmpty)
.map(
(tag) => SoftwareAssetRef(
eventId: tag[1],
relayHint: tag.length > 2 && tag[2].isNotEmpty ? tag[2] : null,
),
)
.toList(growable: false);
if (assets.isEmpty) {
throw const SoftwareParseException('release requires an asset reference');
}
return SoftwareRelease(
identifier: identifier,
version: version,
channel: _requiredTag(event, 'c'),
releaseNotes: event.content,
assets: assets,
event: event,
);
}