fetchLatest method
override
Fetches the latest version per channel.
Implementation
@override
Future<Map<UpdateChannel, PrismVersion>> fetchLatest() async {
final response = await _client.get(url, headers: _headers);
if (response.statusCode < 200 || response.statusCode >= 300) {
throw http.ClientException(
'Update metadata request failed (${response.statusCode})',
url,
);
}
final body = jsonDecode(response.body);
if (body is! Map<String, dynamic>) {
throw const FormatException('Update metadata must be a JSON object');
}
lastPayload = body;
final latest = (body['latest'] as Map<String, dynamic>?) ?? const {};
return {
for (final entry in latest.entries)
if (UpdateChannel.values.asNameMap().containsKey(entry.key))
UpdateChannel.values.byName(entry.key): PrismVersion.parse(
entry.value.toString(),
),
};
}