process method

  1. @override
ErrorReport? process(
  1. ErrorReport report
)
override

Performs process.

Implementation

@override
ErrorReport? process(ErrorReport report) {
  if (report.fatal) return report;
  final now = report.timestamp;
  _seen.removeWhere((_, timestamp) {
    final age = now.difference(timestamp);
    return age.isNegative || age > window;
  });
  var key = report.fingerprint.isNotEmpty
      ? report.fingerprint.join('|')
      : '${report.exception.runtimeType}|${report.message}|'
            '${report.stackTrace?.toString().split('\n').firstOrNull ?? ''}';
  if (key.length > maxFingerprintLength) {
    key = key.substring(0, maxFingerprintLength);
  }
  final previous = _seen[key];
  if (previous != null && now.difference(previous) <= window) return null;
  if (_seen.length >= maxEntries) _seen.remove(_seen.keys.first);
  _seen[key] = now;
  return report;
}