dify/web/app/components/sentry-initor.tsx
2025-02-28 18:08:09 +08:00

43 lines
1.0 KiB
TypeScript

'use client'
import { useEffect } from 'react'
import * as Sentry from '@sentry/react'
import { useTranslation } from 'react-i18next'
import Toast from './base/toast'
import { useDebounceEffect } from 'ahooks'
const isDevelopment = process.env.NODE_ENV === 'development'
const SentryInit = ({
children,
}: { children: React.ReactElement }) => {
const { t } = useTranslation()
useDebounceEffect(() => {
Toast.notify({
type: 'warning',
message: t('common.offlineNotice'),
duration: 60000,
className: 'fixed left-1/2 -translate-x-1/2',
})
}, [t])
useEffect(() => {
const SENTRY_DSN = document?.body?.getAttribute('data-public-sentry-dsn')
if (!isDevelopment && SENTRY_DSN) {
Sentry.init({
dsn: SENTRY_DSN,
integrations: [
new Sentry.BrowserTracing({
}),
new Sentry.Replay(),
],
tracesSampleRate: 0.1,
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
})
}
}, [])
return children
}
export default SentryInit