snapshot method

Future<OfflineStatus> snapshot()

Implementation

Future<OfflineStatus> snapshot() async {
  final (good, bad) = await _read();
  final reasons = <OfflineReason, int>{};
  for (final r in good) {
    if (r.state == 'blocked' && r.reason != null)
      reasons[r.reason!] = (reasons[r.reason!] ?? 0) + 1;
  }
  return OfflineStatus(
    good.where((r) => r.state == 'pending').length,
    reasons,
    good.where((r) => r.state == 'expired_local').length,
    bad.length,
    good.fold(0, (n, r) => n + r.byteSize),
  );
}