diff --git a/aleksis/core/assets/app.js b/aleksis/core/assets/app.js index 00a146a41b096426e36328279729f58b5f77509d..2dc16b83968abbd8d4e494fb37067e34394caa21 100644 --- a/aleksis/core/assets/app.js +++ b/aleksis/core/assets/app.js @@ -45,11 +45,29 @@ const apolloProvider = new VueApollo({ defaultClient: apolloClient, }); - const router = new VueRouter({ mode: "history", }); +if (document.getElementById('sentry_settings') !== null) { + const Sentry = await import("@sentry/vue"); + const { BrowserTracing } = await import("@sentry/tracing"); + + const sentry_settings = JSON.parse(document.getElementById('sentry_settings').textContent); + Sentry.init({ + Vue, + dsn: sentry_settings.dsn, + environment: sentry_settings.environment, + tracesSampleRate: sentry_settings.traces_sample_rate, + logError: true, + integrations: [ + new BrowserTracing({ + routingInstrumentation: Sentry.vueRouterInstrumentation(router), + }), + ], + }); +} + const app = new Vue({ el: "#app", apolloProvider, diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py index 119325431a67baef0abe0f0d9cf923557e39b45b..c55a6bab03658d5f6707b3177d09bfb879eadd42 100644 --- a/aleksis/core/settings.py +++ b/aleksis/core/settings.py @@ -558,7 +558,7 @@ YARN_INSTALLED_APPS = [ "paper-css@^0.4.1", "jquery-sortablejs@^1.0.1", "sortablejs@^1.15.0", - "@sentry/tracing@^6.19.6", + "@sentry/tracing@^7.28.0", "luxon@^2.3.2", "@iconify/iconify@^2.2.1", "@iconify/json@^2.1.30", @@ -578,6 +578,7 @@ YARN_INSTALLED_APPS = [ "@rollup/plugin-graphql@^2.0.2", "@rollup/plugin-virtual@^3.0.1", "vue-i18n@8", + "@sentry/vue@^7.28.0", "eslint@^8.26.0", "eslint-plugin-vue@^9.7.0", "eslint-config-prettier@^8.5.0", diff --git a/aleksis/core/templates/core/vue_index.html b/aleksis/core/templates/core/vue_index.html index 40eed2535a4a366ede6932f649998a53b05a4017..b8f07bb44bc5f2384a7ca01a643dffe5e7bcd340 100644 --- a/aleksis/core/templates/core/vue_index.html +++ b/aleksis/core/templates/core/vue_index.html @@ -14,16 +14,6 @@ {% endif %} {% include_js "Sentry" %} {{ SENTRY_SETTINGS|json_script:"sentry_settings" }} - <script type="text/javascript"> - const sentry_settings = JSON.parse(document.getElementById('sentry_settings').textContent); - - Sentry.init({ - dsn: sentry_settings.dsn, - environment: sentry_settings.environment, - tracesSampleRate: sentry_settings.traces_sample_rate, - integrations: [new Sentry.Integrations.BrowserTracing()] - }); - </script> {% endif %} {% vite_hmr_client %} diff --git a/aleksis/core/vite.config.js b/aleksis/core/vite.config.js index 5f3ac056eece1b3d82a42f8ace6f68f50567063c..23057604063605d9eb8cf6a2db62832d93ea6e2b 100644 --- a/aleksis/core/vite.config.js +++ b/aleksis/core/vite.config.js @@ -29,6 +29,7 @@ export default defineConfig({ build: { outDir: path.resolve("./vite_bundles/"), manifest: true, + target: ["firefox102", "chrome108", "safari16"], rollupOptions: { input: django_values.coreEntrypoint, output: { @@ -40,6 +41,8 @@ export default defineConfig({ return "apollo"; } else if (id.includes("node_modules/graphql")) { return "graphql"; + } else if (id.includes("node_modules/@sentry")) { + return "sentry"; } else if (id.includes("node_modules")) { // Fallback for all other libraries return "vendor";