From 0015bfbaf22c8c9e36bd916e60427541dce8b735 Mon Sep 17 00:00:00 2001 From: EYHN Date: Wed, 5 Mar 2025 11:18:06 +0000 Subject: [PATCH] refactor(core): adjust sentry config (#10631) --- packages/frontend/apps/android/src/index.tsx | 3 +- .../apps/electron-renderer/src/index.tsx | 36 ++++++++++++- .../frontend/apps/electron/src/main/index.ts | 9 ++-- .../apps/electron/src/main/ui/handlers.ts | 5 -- packages/frontend/apps/ios/src/index.tsx | 1 + packages/frontend/apps/mobile/src/index.tsx | 1 + packages/frontend/apps/web/src/index.tsx | 1 + .../desktop-api/service/desktop-api.ts | 50 ------------------- packages/frontend/track/src/mixpanel.ts | 1 + 9 files changed, 46 insertions(+), 61 deletions(-) diff --git a/packages/frontend/apps/android/src/index.tsx b/packages/frontend/apps/android/src/index.tsx index 4d279a07a5..13db0e77b4 100644 --- a/packages/frontend/apps/android/src/index.tsx +++ b/packages/frontend/apps/android/src/index.tsx @@ -33,6 +33,7 @@ function main() { ], }); setTags({ + distribution: BUILD_CONFIG.distribution, appVersion: BUILD_CONFIG.appVersion, editorVersion: BUILD_CONFIG.editorVersion, }); @@ -41,7 +42,7 @@ function main() { } function mountApp() { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + // oxlint-disable-next-line @typescript-eslint/no-non-null-assertion const root = document.getElementById('app')!; createRoot(root).render( diff --git a/packages/frontend/apps/electron-renderer/src/index.tsx b/packages/frontend/apps/electron-renderer/src/index.tsx index a3230ed65b..898bfe3e3e 100644 --- a/packages/frontend/apps/electron-renderer/src/index.tsx +++ b/packages/frontend/apps/electron-renderer/src/index.tsx @@ -1,12 +1,46 @@ import './setup'; import { appConfigProxy } from '@affine/core/components/hooks/use-app-config-storage'; -import { StrictMode } from 'react'; +import { + init, + reactRouterV6BrowserTracingIntegration, + setTags, +} from '@sentry/react'; +import { StrictMode, useEffect } from 'react'; import { createRoot } from 'react-dom/client'; +import { + createRoutesFromChildren, + matchRoutes, + useLocation, + useNavigationType, +} from 'react-router-dom'; import { App } from './app'; function main() { + // skip bootstrap setup for desktop onboarding + if (BUILD_CONFIG.debug || window.SENTRY_RELEASE) { + // https://docs.sentry.io/platforms/javascript/guides/react/#configure + init({ + dsn: process.env.SENTRY_DSN, + environment: process.env.BUILD_TYPE ?? 'development', + integrations: [ + reactRouterV6BrowserTracingIntegration({ + useEffect, + useLocation, + useNavigationType, + createRoutesFromChildren, + matchRoutes, + }), + ], + }); + setTags({ + distribution: BUILD_CONFIG.distribution, + appVersion: BUILD_CONFIG.appVersion, + editorVersion: BUILD_CONFIG.editorVersion, + }); + } + // load persistent config for electron // TODO(@Peng): should be sync, but it's not necessary for now appConfigProxy diff --git a/packages/frontend/apps/electron/src/main/index.ts b/packages/frontend/apps/electron/src/main/index.ts index afb31b0db8..2015b35dcc 100644 --- a/packages/frontend/apps/electron/src/main/index.ts +++ b/packages/frontend/apps/electron/src/main/index.ts @@ -14,7 +14,6 @@ import { registerEvents } from './events'; import { registerHandlers } from './handlers'; import { logger } from './logger'; import { registerProtocol } from './protocol'; -import { isOnline } from './ui'; import { launch } from './windows-manager/launcher'; import { launchStage } from './windows-manager/stage'; @@ -38,7 +37,7 @@ if (overrideSession) { app.setPath('sessionData', userDataPath); } -// eslint-disable-next-line @typescript-eslint/no-var-requires +// oxlint-disable-next-line @typescript-eslint/no-var-requires if (require('electron-squirrel-startup')) app.quit(); if (process.env.SKIP_ONBOARDING) { @@ -97,8 +96,10 @@ if (process.env.SENTRY_RELEASE) { transportOptions: { maxAgeDays: 30, maxQueueSize: 100, - shouldStore: () => !isOnline, - shouldSend: () => isOnline, }, }); + Sentry.setTags({ + distribution: 'electron', + appVersion: app.getVersion(), + }); } diff --git a/packages/frontend/apps/electron/src/main/ui/handlers.ts b/packages/frontend/apps/electron/src/main/ui/handlers.ts index 8ef369f814..7480beb862 100644 --- a/packages/frontend/apps/electron/src/main/ui/handlers.ts +++ b/packages/frontend/apps/electron/src/main/ui/handlers.ts @@ -32,8 +32,6 @@ import { getOrCreateCustomThemeWindow } from '../windows-manager/custom-theme-wi import { getChallengeResponse } from './challenge'; import { uiSubjects } from './subject'; -export let isOnline = true; - export const uiHandlers = { isMaximized: async () => { const window = await getMainWindow(); @@ -75,9 +73,6 @@ export const uiHandlers = { const window = await getMainWindow(); window?.hide(); }, - handleNetworkChange: async (_, _isOnline: boolean) => { - isOnline = _isOnline; - }, getChallengeResponse: async (_, challenge: string) => { return getChallengeResponse(challenge); }, diff --git a/packages/frontend/apps/ios/src/index.tsx b/packages/frontend/apps/ios/src/index.tsx index 5b8205ad62..10bceb97aa 100644 --- a/packages/frontend/apps/ios/src/index.tsx +++ b/packages/frontend/apps/ios/src/index.tsx @@ -42,6 +42,7 @@ function main() { ], }); setTags({ + distribution: BUILD_CONFIG.distribution, appVersion: BUILD_CONFIG.appVersion, editorVersion: BUILD_CONFIG.editorVersion, }); diff --git a/packages/frontend/apps/mobile/src/index.tsx b/packages/frontend/apps/mobile/src/index.tsx index df106ac8fe..ede2480107 100644 --- a/packages/frontend/apps/mobile/src/index.tsx +++ b/packages/frontend/apps/mobile/src/index.tsx @@ -33,6 +33,7 @@ function main() { ], }); setTags({ + distribution: BUILD_CONFIG.distribution, appVersion: BUILD_CONFIG.appVersion, editorVersion: BUILD_CONFIG.editorVersion, }); diff --git a/packages/frontend/apps/web/src/index.tsx b/packages/frontend/apps/web/src/index.tsx index 67dcbe2bac..26e98270e0 100644 --- a/packages/frontend/apps/web/src/index.tsx +++ b/packages/frontend/apps/web/src/index.tsx @@ -34,6 +34,7 @@ function main() { ], }); setTags({ + distribution: BUILD_CONFIG.distribution, appVersion: BUILD_CONFIG.appVersion, editorVersion: BUILD_CONFIG.editorVersion, }); diff --git a/packages/frontend/core/src/modules/desktop-api/service/desktop-api.ts b/packages/frontend/core/src/modules/desktop-api/service/desktop-api.ts index 4020872aae..b576be831f 100644 --- a/packages/frontend/core/src/modules/desktop-api/service/desktop-api.ts +++ b/packages/frontend/core/src/modules/desktop-api/service/desktop-api.ts @@ -1,19 +1,7 @@ import { notify } from '@affine/component'; import { I18n } from '@affine/i18n'; -import { - init, - reactRouterV6BrowserTracingIntegration, - setTags, -} from '@sentry/react'; import { OnEvent, Service } from '@toeverything/infra'; import { debounce } from 'lodash-es'; -import { useEffect } from 'react'; -import { - createRoutesFromChildren, - matchRoutes, - useLocation, - useNavigationType, -} from 'react-router-dom'; import { AuthService, DefaultServerService, ServersService } from '../../cloud'; import { ApplicationStarted } from '../../lifecycle'; @@ -45,48 +33,10 @@ export class DesktopApiService extends Service { } private setupStartListener() { - this.setupSentry(); this.setupCommonUIEvents(); this.setupAuthRequestEvent(); } - private setupSentry() { - if ( - BUILD_CONFIG.debug || - window.SENTRY_RELEASE || - this.api.appInfo.windowName !== 'main' - ) { - // https://docs.sentry.io/platforms/javascript/guides/electron/ - init({ - dsn: process.env.SENTRY_DSN, - environment: process.env.BUILD_TYPE ?? 'development', - integrations: [ - reactRouterV6BrowserTracingIntegration({ - useEffect, - useLocation, - useNavigationType, - createRoutesFromChildren, - matchRoutes, - }), - ], - }); - setTags({ - appVersion: BUILD_CONFIG.appVersion, - editorVersion: BUILD_CONFIG.editorVersion, - }); - - this.api.handler.ui - .handleNetworkChange(navigator.onLine) - .catch(console.error); - window.addEventListener('offline', () => { - this.api.handler.ui.handleNetworkChange(false).catch(console.error); - }); - window.addEventListener('online', () => { - this.api.handler.ui.handleNetworkChange(true).catch(console.error); - }); - } - } - private setupCommonUIEvents() { if (this.api.appInfo.windowName !== 'main') { return; diff --git a/packages/frontend/track/src/mixpanel.ts b/packages/frontend/track/src/mixpanel.ts index 6d022a9c18..613b0f50d8 100644 --- a/packages/frontend/track/src/mixpanel.ts +++ b/packages/frontend/track/src/mixpanel.ts @@ -36,6 +36,7 @@ function createMixpanel() { editorVersion: BUILD_CONFIG.editorVersion, isDesktop: BUILD_CONFIG.isElectron, isSelfHosted: environment.isSelfHosted, + distribution: BUILD_CONFIG.distribution, }); }, reset() {