applyToEvent method

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

Implementation

Future<SentryEvent?> applyToEvent(
  SentryEvent event,
  Hint hint,
) async {
  event = event.copyWith(
    transaction: event.transaction ?? transaction,
    user: _mergeUsers(user, event.user),
    breadcrumbs: (event.breadcrumbs?.isNotEmpty ?? false)
        ? event.breadcrumbs
        : List.from(_breadcrumbs),
    tags: tags.isNotEmpty ? _mergeEventTags(event) : event.tags,
    // ignore: deprecated_member_use_from_same_package
    extra: extra.isNotEmpty ? _mergeEventExtra(event) : event.extra,
  );

  if (event is! SentryTransaction) {
    event = event.copyWith(
        fingerprint: (event.fingerprint?.isNotEmpty ?? false)
            ? event.fingerprint
            : _fingerprint,
        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<SentryRuntime> &&
        value.isNotEmpty) {
      _mergeEventContextsRuntimes(value, event);
    } else if (key != SentryRuntime.listType &&
        (!event.contexts.containsKey(key) || event.contexts[key] == null) &&
        value != null) {
      event.contexts[key] = value;
    }
  });

  final newSpan = span;
  if (event.contexts.trace == null) {
    if (newSpan != null) {
      event.contexts.trace = newSpan.context.toTraceContext(
        sampled: newSpan.samplingDecision?.sampled,
      );
    } else {
      event.contexts.trace =
          SentryTraceContext.fromPropagationContext(propagationContext);
    }
  }

  return await runEventProcessors(event, hint, _eventProcessors, _options);
}