@@ -172,6 +172,32 @@ export class Scope {
172172 this . notifyScopeListeners ( ) ;
173173 }
174174
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+
175201 /**
176202 * Applies the current context and fingerprint to the event.
177203 * Note that breadcrumbs will be added by the client.
@@ -194,12 +220,12 @@ export class Scope {
194220 if ( this . user && Object . keys ( this . user ) . length ) {
195221 event . user = { ...this . user , ...event . user } ;
196222 }
197- if ( this . fingerprint && event . fingerprint === undefined ) {
198- event . fingerprint = this . fingerprint ;
199- }
200223 if ( this . level ) {
201224 event . level = this . level ;
202225 }
226+
227+ this . applyFingerprint ( event ) ;
228+
203229 const hasNoBreadcrumbs = ! event . breadcrumbs || event . breadcrumbs . length === 0 ;
204230 if ( hasNoBreadcrumbs && this . breadcrumbs . length > 0 ) {
205231 event . breadcrumbs =
0 commit comments