Skip to content

Commit 69670c9

Browse files
denrasemarandaneto
andauthored
Pass processed Breadcrumb to scope observer (#1298)
Co-authored-by: Manoel Aranda Neto <[email protected]>
1 parent d2f62d6 commit 69670c9

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
### Fixes
1616

17+
- Pass processed Breadcrumb to scope observer ([#1298](https://github.com/getsentry/sentry-dart/pull/1298))
1718
- Remove duplicated breadcrumbs when syncing with iOS/macOS ([#1283](https://github.com/getsentry/sentry-dart/pull/1283))
1819

1920
## 6.20.1

dart/lib/src/scope.dart

+7-6
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,10 @@ class Scope {
155155

156156
Scope(this._options);
157157

158-
bool _addBreadCrumbSync(Breadcrumb breadcrumb, {dynamic hint}) {
158+
Breadcrumb? _addBreadCrumbSync(Breadcrumb breadcrumb, {dynamic hint}) {
159159
// bail out if maxBreadcrumbs is zero
160160
if (_options.maxBreadcrumbs == 0) {
161-
return false;
161+
return null;
162162
}
163163

164164
Breadcrumb? processedBreadcrumb = breadcrumb;
@@ -174,7 +174,7 @@ class Scope {
174174
SentryLevel.info,
175175
'Breadcrumb was dropped by beforeBreadcrumb',
176176
);
177-
return false;
177+
return null;
178178
}
179179
} catch (exception, stackTrace) {
180180
_options.logger(
@@ -193,14 +193,15 @@ class Scope {
193193
}
194194
_breadcrumbs.add(processedBreadcrumb);
195195
}
196-
return true;
196+
return processedBreadcrumb;
197197
}
198198

199199
/// Adds a breadcrumb to the breadcrumbs queue
200200
Future<void> addBreadcrumb(Breadcrumb breadcrumb, {dynamic hint}) async {
201-
if (_addBreadCrumbSync(breadcrumb, hint: hint)) {
201+
final addedBreadcrumb = _addBreadCrumbSync(breadcrumb, hint: hint);
202+
if (addedBreadcrumb != null) {
202203
await _callScopeObservers((scopeObserver) async =>
203-
await scopeObserver.addBreadcrumb(breadcrumb));
204+
await scopeObserver.addBreadcrumb(addedBreadcrumb));
204205
}
205206
}
206207

dart/test/mocks/mock_scope_observer.dart

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:sentry/sentry.dart';
22

33
class MockScopeObserver extends ScopeObserver {
4+
List<Breadcrumb> addedBreadcrumbs = [];
45
bool calledAddBreadcrumb = false;
56
bool calledClearBreadcrumbs = false;
67
bool calledRemoveContexts = false;
@@ -25,6 +26,7 @@ class MockScopeObserver extends ScopeObserver {
2526
Future<void> addBreadcrumb(Breadcrumb breadcrumb) async {
2627
calledAddBreadcrumb = true;
2728
numberOfAddBreadcrumbCalls += 1;
29+
addedBreadcrumbs.add(breadcrumb);
2830
}
2931

3032
@override

dart/test/scope_test.dart

+16
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,22 @@ void main() {
611611
expect(true, fixture.mockScopeObserver.calledAddBreadcrumb);
612612
});
613613

614+
test('addBreadcrumb passes processed breadcrumb to scope observers',
615+
() async {
616+
final sut = fixture.getSut(
617+
scopeObserver: fixture.mockScopeObserver,
618+
beforeBreadcrumbCallback: (
619+
Breadcrumb? breadcrumb, {
620+
dynamic hint,
621+
}) {
622+
return breadcrumb?.copyWith(message: "modified");
623+
},
624+
);
625+
await sut.addBreadcrumb(Breadcrumb());
626+
627+
expect(fixture.mockScopeObserver.addedBreadcrumbs[0].message, "modified");
628+
});
629+
614630
test('clearBreadcrumbs should call scope observers', () async {
615631
final sut = fixture.getSut(scopeObserver: fixture.mockScopeObserver);
616632
await sut.clearBreadcrumbs();

0 commit comments

Comments
 (0)