fetch method

Future<Map<String, dynamic>> fetch(
  1. Client client, {
  2. String? customUri,
})

Implementation

Future<Map<String, dynamic>> fetch(
  Client client, {
  String? customUri,
}) async {
  if (customUri != null) {
    _logger.debug('Fetching summary by customUri', {'uri': customUri});
    return _readAndParse(client, customUri);
  }

  final resources = await client.listResources();

  for (final r in resources) {
    if (r.uri == 'ui://views/summary') {
      return _readAndParse(client, r.uri);
    }
  }
  for (final r in resources) {
    if (r.uri.toLowerCase().contains('summary')) {
      return _readAndParse(client, r.uri);
    }
  }

  // Fallback: build a minimal summary from manifest.
  Resource? manifest;
  for (final r in resources) {
    if (r.uri == 'ui://manifest' ||
        r.name.toLowerCase().contains('manifest')) {
      manifest = r;
      break;
    }
  }
  if (manifest != null) {
    final data = await _readAndParse(client, manifest.uri);
    return _buildFallbackSummary(data);
  }

  throw ResourceNotFoundException('No summary view available');
}