snapshot method
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),
);
}