applyToEvent method
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;
}