@@ -172,6 +172,32 @@ export class Scope {
172
172
this . notifyScopeListeners ( ) ;
173
173
}
174
174
175
+ /**
176
+ * Applies fingerprint from the scope to the event if there's one,
177
+ * uses message if there's one instead or get rid of empty fingerprint
178
+ */
179
+ private applyFingerprint ( event : SentryEvent ) : void {
180
+ // Make sure it's an array first and we actually have something in place
181
+ event . fingerprint = event . fingerprint
182
+ ? Array . isArray ( event . fingerprint )
183
+ ? event . fingerprint
184
+ : [ event . fingerprint ]
185
+ : [ ] ;
186
+
187
+ // If we have something on the scope, then merge it with event
188
+ if ( this . fingerprint ) {
189
+ event . fingerprint = event . fingerprint . concat ( this . fingerprint ) ;
190
+ } else if ( event . message ) {
191
+ // If not, but we have message, use it instead
192
+ event . fingerprint = event . fingerprint . concat ( event . message ) ;
193
+ }
194
+
195
+ // If we have no data at all, remove empty array default
196
+ if ( event . fingerprint && ! event . fingerprint . length ) {
197
+ delete event . fingerprint ;
198
+ }
199
+ }
200
+
175
201
/**
176
202
* Applies the current context and fingerprint to the event.
177
203
* Note that breadcrumbs will be added by the client.
@@ -194,12 +220,12 @@ export class Scope {
194
220
if ( this . user && Object . keys ( this . user ) . length ) {
195
221
event . user = { ...this . user , ...event . user } ;
196
222
}
197
- if ( this . fingerprint && event . fingerprint === undefined ) {
198
- event . fingerprint = this . fingerprint ;
199
- }
200
223
if ( this . level ) {
201
224
event . level = this . level ;
202
225
}
226
+
227
+ this . applyFingerprint ( event ) ;
228
+
203
229
const hasNoBreadcrumbs = ! event . breadcrumbs || event . breadcrumbs . length === 0 ;
204
230
if ( hasNoBreadcrumbs && this . breadcrumbs . length > 0 ) {
205
231
event . breadcrumbs =
0 commit comments