listPendingCramKeys method

Future<List<Map<String, dynamic>>> listPendingCramKeys()

Implementation

Future<List<Map<String, dynamic>>> listPendingCramKeys() async {
  await ensureReady();

  final files = await _directory!
      .list()
      .where((entity) {
        if (entity is! File) {
          return false;
        }

        return entity.path.endsWith('.json');
      })
      .cast<File>()
      .toList();

  files.sort((a, b) => b.path.compareTo(a.path));

  final results = <Map<String, dynamic>>[];
  for (final file in files) {
    try {
      final raw = await file.readAsString();
      final decoded = jsonDecode(raw);
      results.add({
        'filename': path.basename(file.path),
        'path': file.path,
        'data': decoded,
      });
    } catch (_) {
      results.add({
        'filename': path.basename(file.path),
        'path': file.path,
        'data': null,
        'error': 'Failed to parse CRAM key file',
      });
    }
  }

  return results;
}