applyToEvent method

Future<SentryEvent?> applyToEvent(
  1. SentryEvent event,
  2. dynamic hint
)

Implementation

Future<SentryEvent?> applyToEvent(SentryEvent event, dynamic hint) async {
  event = event.copyWith(
    transaction: event.transaction ?? transaction,
    user: _mergeUsers(user, event.user),
    fingerprint: (event.fingerprint?.isNotEmpty ?? false)
        ? event.fingerprint
        : _fingerprint,
    breadcrumbs: (event.breadcrumbs?.isNotEmpty ?? false)
        ? event.breadcrumbs
        : List.from(_breadcrumbs),
    tags: tags.isNotEmpty ? _mergeEventTags(event) : event.tags,
    extra: extra.isNotEmpty ? _mergeEventExtra(event) : event.extra,
    level: level ?? event.level,
  );

  _contexts.clone().forEach((key, value) {
    // add the contexts runtime list to the event.contexts.runtimes
    if (key == SentryRuntime.listType && value is List && value.isNotEmpty) {
      _mergeEventContextsRuntimes(value, event);
    } else if (key != SentryRuntime.listType &&
        (!event.contexts.containsKey(key) || event.contexts[key] == null) &&
        value != null) {
      event.contexts[key] = value;
    }
  });

  SentryEvent? processedEvent = event;
  for (final processor in _eventProcessors) {
    try {
      processedEvent = await processor(processedEvent!, hint: hint);
    } catch (err) {
      _options.logger(
        SentryLevel.error,
        'An exception occurred while processing event by a processor : $err',
      );
    }
    if (processedEvent == null) {
      _options.logger(SentryLevel.debug, 'Event was dropped by a processor');
      break;
    }
  }

  return processedEvent;
}