getErrorSummary method

ErrorSummary getErrorSummary({
  1. required String relayUrl,
})

Get error summary for diagnostics.

Implementation

ErrorSummary getErrorSummary({required String relayUrl}) {
  final relayErrors =
      _errorHistory.where((e) => e.relayUrl == relayUrl).toList();

  if (relayErrors.isEmpty) {
    return ErrorSummary(
      relayUrl: relayUrl,
      totalErrors: 0,
      errorsByType: {},
      recentErrors: [],
    );
  }

  final errorsByType = <ErrorType, int>{};
  for (final error in relayErrors) {
    errorsByType[error.errorType] = (errorsByType[error.errorType] ?? 0) + 1;
  }

  final recentErrors = relayErrors
      .where((e) => DateTime.now().difference(e.timestamp).inMinutes < 5)
      .toList();

  return ErrorSummary(
    relayUrl: relayUrl,
    totalErrors: relayErrors.length,
    errorsByType: Map.unmodifiable(errorsByType),
    recentErrors: recentErrors,
  );
}