Skip to content

Commit 9bd21be

Browse files
authored
Merge pull request #14 from dsvishchov/native-breadcrumbs-hook
Native breadcrumbs hook
2 parents b2d470d + 9a842e2 commit 9bd21be

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

src/wrapper.android.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,18 @@ export namespace NATIVE {
690690
},
691691
})
692692
);
693+
config.setBeforeBreadcrumb(
694+
new io.sentry.SentryOptions.BeforeBreadcrumbCallback({
695+
execute(event, hint) {
696+
if (options.beforeBreadcrumb) {
697+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
698+
return options.beforeBreadcrumb(event, hint);
699+
} else {
700+
return event;
701+
}
702+
}
703+
})
704+
);
693705
nSentryOptions = config;
694706
sentryOptions = options;
695707
} catch(err) {

src/wrapper.ios.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ export namespace NATIVE {
331331
return false;
332332
}
333333
sentryOptions = options;
334-
const {tracesSampleRate, tracesSampler, beforeSend, ...toPassOptions} = options;
334+
const {tracesSampleRate, tracesSampler, beforeSend, beforeBreadcrumb, ...toPassOptions} = options;
335335

336336
Object.keys(toPassOptions).forEach((k) => {
337337
const value = toPassOptions[k];
@@ -366,6 +366,23 @@ export namespace NATIVE {
366366
setEventOriginTag(event);
367367
return event;
368368
};
369+
nSentryOptions.beforeBreadcrumb = (breadcrumb) => {
370+
if (beforeBreadcrumb) {
371+
const deserialized = dictToJSON(breadcrumb.serialize());
372+
const processed = beforeBreadcrumb(deserialized, null);
373+
const serialized = dataSerialize(processed);
374+
const levels = ['log', 'debug', 'info', 'warning', 'error', 'fatal'];
375+
376+
if (processed) {
377+
breadcrumb.level = Math.max(levels.indexOf(processed['level']), 0);
378+
['category', 'data', 'message', 'type']
379+
.forEach(key => breadcrumb[key] = serialized.objectForKey(key));
380+
} else {
381+
return null;
382+
}
383+
}
384+
return breadcrumb;
385+
}
369386
if (toPassOptions.hasOwnProperty('enableNativeCrashHandling')) {
370387
if (!toPassOptions.enableNativeCrashHandling) {
371388
const integrations = nSentryOptions.integrations.mutableCopy();

0 commit comments

Comments
 (0)