From 9e3c76465db09ac04d9289dea6e8ee5da077b912 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Fri, 2 Jun 2023 14:33:32 +0200 Subject: [PATCH] Fix Sentry Replay integration --- app/assets/javascripts/base.js | 6 ++++-- app/javascript/application.js | 16 +++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/base.js b/app/assets/javascripts/base.js index d181d4c6..a2cabeec 100644 --- a/app/assets/javascripts/base.js +++ b/app/assets/javascripts/base.js @@ -44,7 +44,9 @@ $(document).on('turbolinks:load', function() { // Initialize Sentry const sentrySettings = $('meta[name="sentry"]') - if (sentrySettings.data()['enabled']) { + + // Workaround for Turbolinks: We must not re-initialize the Relay object when visiting another page + if (sentrySettings.data()['enabled'] && !Sentry.Replay.prototype._isInitialized) { Sentry.init({ dsn: sentrySettings.data('dsn'), attachStacktrace: true, @@ -54,7 +56,7 @@ $(document).on('turbolinks:load', function() { tracesSampleRate: 1.0, replaysSessionSampleRate: 0.0, replaysOnErrorSampleRate: 1.0, - integrations: window.SentryIntegrations, + integrations: window.SentryIntegrations(), initialScope: scope =>{ const user = $('meta[name="current-user"]').attr('content'); diff --git a/app/javascript/application.js b/app/javascript/application.js index 7e74b856..fc35b9cc 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -24,13 +24,15 @@ window.bootstrap = bootstrap; // Publish bootstrap in global namespace window._ = _; // Publish underscore's `_` in global namespace window.d3 = d3; // Publish d3 in global namespace window.Sentry = Sentry; // Publish sentry in global namespace -window.SentryIntegrations = [ // Publish sentry integration in global namespace - new SentryIntegration.ReportingObserver(), - new SentryIntegration.ExtraErrorData(), - new SentryIntegration.HttpClient(), - new Sentry.BrowserTracing(), - new Sentry.Replay(), -]; +window.SentryIntegrations = function() { // Publish sentry integration in global namespace + return [ + new SentryIntegration.ReportingObserver(), + new SentryIntegration.ExtraErrorData(), + new SentryIntegration.HttpClient(), + new Sentry.BrowserTracing(), + new Sentry.Replay(), + ] +}; window.SentryUtils = { dynamicSamplingContextToSentryBaggageHeader, startIdleTransaction, TRACING_DEFAULTS }; // CSS