fetchLatest method

  1. @override
Future<Map<UpdateChannel, PrismVersion>> fetchLatest()
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(),
        ),
  };
}