diff --git a/package-lock.json b/package-lock.json
index 7dbcd141..684cfd69 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,8 +15,6 @@
"@material-ui/core": "4.12.3",
"@material-ui/icons": "4.11.2",
"@material-ui/lab": "4.0.0-alpha.57",
- "@sentry/react": "^7.1.1",
- "@sentry/tracing": "^7.1.1",
"assert": "^2.0.0",
"axios": "0.24.0",
"bignumber.js": "9.0.1",
@@ -65,9 +63,9 @@
"@types/file-saver": "2.0.4",
"@types/jest": "27.0.2",
"@types/qrcode.react": "1.0.2",
- "@types/react": ">=17.0.0 || >=18.0.0",
+ "@types/react": "17.0.34",
"@types/react-copy-to-clipboard": "5.0.2",
- "@types/react-dom": ">=17.0.0 || >=18.0.0",
+ "@types/react-dom": "17.0.11",
"@types/react-router": "5.1.18",
"@types/react-router-dom": "5.3.2",
"@types/react-syntax-highlighter": "13.5.2",
@@ -4183,99 +4181,6 @@
"integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==",
"dev": true
},
- "node_modules/@sentry/browser": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.1.1.tgz",
- "integrity": "sha512-5AQvStZ+nOP/yxsBmeMZpeGLVtuOgnCNvswKd/c1CJwNw7bDmCE4TQeNKp1C3Gb7lSdBk8ViwUKn0ZpoVQ5MTw==",
- "dependencies": {
- "@sentry/core": "7.1.1",
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@sentry/core": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.1.1.tgz",
- "integrity": "sha512-SADdAoG5u1LTJhPN5KPtn5HHmH6r0mr6h2LokuZnhj6/okrAuCIIKOb6Fh8jV7j2VuABvew8+FjJHORxi7D/3Q==",
- "dependencies": {
- "@sentry/hub": "7.1.1",
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@sentry/hub": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.1.1.tgz",
- "integrity": "sha512-ASsRVjYDIii6ZTf36JnIYKHWBQBk0P42Tgq324MpyPgaeVDg3saBcyXO5iAtWvY6Vmdi2H4JCVDoir2Zz3Me1w==",
- "dependencies": {
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@sentry/react": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.1.1.tgz",
- "integrity": "sha512-Z7cZvXHIWxg7OhOSy4InhrRgQPRNtHsyOkIAHkgwW32JYOGTg1HdqQ5mFUxQLejhU/YqsxVjTK4CI58FATykLw==",
- "dependencies": {
- "@sentry/browser": "7.1.1",
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "hoist-non-react-statics": "^3.3.2",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=8"
- },
- "peerDependencies": {
- "react": "15.x || 16.x || 17.x || 18.x"
- }
- },
- "node_modules/@sentry/tracing": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.1.1.tgz",
- "integrity": "sha512-MJ+EPGfvPlgbJOcZRoIl6+Oi0oRE2nIi/HP2BPJSKGxXFi2Y09bcZUwfxOH8fkUa465jOGBFdCm+sXcbyExvuw==",
- "dependencies": {
- "@sentry/hub": "7.1.1",
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@sentry/types": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.1.1.tgz",
- "integrity": "sha512-5N1UMd2SqvUXprcIUMyDEju3H9lJY2oWfWQBGo0lG6Amn/lGAPAYlchg+4vQCLutDQMyd8K9zPwcbKn4u6gHdw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@sentry/utils": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.1.1.tgz",
- "integrity": "sha512-DPRHDf3InfyVgmxToE4Z+AATAR4OVm+wsXDLFGGyncR91CE1x4wLQKOcAJJwX3F0Hz1VHENfmx1DvyYTHOrC/A==",
- "dependencies": {
- "@sentry/types": "7.1.1",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@sinclair/typebox": {
"version": "0.23.5",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz",
@@ -23578,75 +23483,6 @@
"integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==",
"dev": true
},
- "@sentry/browser": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.1.1.tgz",
- "integrity": "sha512-5AQvStZ+nOP/yxsBmeMZpeGLVtuOgnCNvswKd/c1CJwNw7bDmCE4TQeNKp1C3Gb7lSdBk8ViwUKn0ZpoVQ5MTw==",
- "requires": {
- "@sentry/core": "7.1.1",
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "tslib": "^1.9.3"
- }
- },
- "@sentry/core": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.1.1.tgz",
- "integrity": "sha512-SADdAoG5u1LTJhPN5KPtn5HHmH6r0mr6h2LokuZnhj6/okrAuCIIKOb6Fh8jV7j2VuABvew8+FjJHORxi7D/3Q==",
- "requires": {
- "@sentry/hub": "7.1.1",
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "tslib": "^1.9.3"
- }
- },
- "@sentry/hub": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.1.1.tgz",
- "integrity": "sha512-ASsRVjYDIii6ZTf36JnIYKHWBQBk0P42Tgq324MpyPgaeVDg3saBcyXO5iAtWvY6Vmdi2H4JCVDoir2Zz3Me1w==",
- "requires": {
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "tslib": "^1.9.3"
- }
- },
- "@sentry/react": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.1.1.tgz",
- "integrity": "sha512-Z7cZvXHIWxg7OhOSy4InhrRgQPRNtHsyOkIAHkgwW32JYOGTg1HdqQ5mFUxQLejhU/YqsxVjTK4CI58FATykLw==",
- "requires": {
- "@sentry/browser": "7.1.1",
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "hoist-non-react-statics": "^3.3.2",
- "tslib": "^1.9.3"
- }
- },
- "@sentry/tracing": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.1.1.tgz",
- "integrity": "sha512-MJ+EPGfvPlgbJOcZRoIl6+Oi0oRE2nIi/HP2BPJSKGxXFi2Y09bcZUwfxOH8fkUa465jOGBFdCm+sXcbyExvuw==",
- "requires": {
- "@sentry/hub": "7.1.1",
- "@sentry/types": "7.1.1",
- "@sentry/utils": "7.1.1",
- "tslib": "^1.9.3"
- }
- },
- "@sentry/types": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.1.1.tgz",
- "integrity": "sha512-5N1UMd2SqvUXprcIUMyDEju3H9lJY2oWfWQBGo0lG6Amn/lGAPAYlchg+4vQCLutDQMyd8K9zPwcbKn4u6gHdw=="
- },
- "@sentry/utils": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.1.1.tgz",
- "integrity": "sha512-DPRHDf3InfyVgmxToE4Z+AATAR4OVm+wsXDLFGGyncR91CE1x4wLQKOcAJJwX3F0Hz1VHENfmx1DvyYTHOrC/A==",
- "requires": {
- "@sentry/types": "7.1.1",
- "tslib": "^1.9.3"
- }
- },
"@sinclair/typebox": {
"version": "0.23.5",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz",
diff --git a/package.json b/package.json
index 06f9915f..b5cbad73 100644
--- a/package.json
+++ b/package.json
@@ -32,8 +32,6 @@
"@material-ui/core": "4.12.3",
"@material-ui/icons": "4.11.2",
"@material-ui/lab": "4.0.0-alpha.57",
- "@sentry/react": "^7.1.1",
- "@sentry/tracing": "^7.1.1",
"assert": "^2.0.0",
"axios": "0.24.0",
"bignumber.js": "9.0.1",
@@ -162,4 +160,4 @@
"npm": ">=6.9.0",
"bee": ">=0.6.0"
}
-}
\ No newline at end of file
+}
diff --git a/src/App.tsx b/src/App.tsx
index 5b224401..62726708 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -3,7 +3,6 @@ import { ThemeProvider } from '@material-ui/core/styles'
import { SnackbarProvider } from 'notistack'
import React, { ReactElement } from 'react'
import { HashRouter as Router } from 'react-router-dom'
-import * as Sentry from '@sentry/react'
import './App.css'
import Dashboard from './layout/Dashboard'
import { Provider as BeeProvider } from './providers/Bee'
@@ -16,9 +15,6 @@ import { Provider as TopUpProvider } from './providers/TopUp'
import { Provider as BalanceProvider } from './providers/WalletBalance'
import BaseRouter from './routes'
import { theme } from './theme'
-import { config } from './config'
-import ItsBroken from './layout/ItsBroken'
-import { initSentry } from './utils/sentry'
interface Props {
beeApiUrl?: string
@@ -27,11 +23,6 @@ interface Props {
isBeeDesktop?: boolean
}
-if (config.SENTRY_KEY) {
- // eslint-disable-next-line no-console
- initSentry().catch(e => console.error(e))
-}
-
const App = ({ beeApiUrl, beeDebugApiUrl, lockedApiSettings, isBeeDesktop }: Props): ReactElement => {
const mainApp = (
@@ -71,18 +62,6 @@ const App = ({ beeApiUrl, beeDebugApiUrl, lockedApiSettings, isBeeDesktop }: Pro
)
- // Displays Report Dialog when some component crashes
- if (config.SENTRY_KEY) {
- return (
- }
- >
- {mainApp}
-
- )
- }
-
return mainApp
}
diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx
index e7e74977..f0c82de3 100644
--- a/src/components/ErrorBoundary.tsx
+++ b/src/components/ErrorBoundary.tsx
@@ -1,5 +1,4 @@
import { Component, ErrorInfo, ReactElement } from 'react'
-import ItsBroken from '../layout/ItsBroken'
interface Props {
children: ReactElement
@@ -27,7 +26,8 @@ export default class ErrorBoundary extends Component {
render(): ReactElement {
if (this.state.error) {
- return
+ // You can render any custom fallback UI
+ return Something went wrong. Error: {this.state.error.message}
}
return this.props.children
diff --git a/src/components/Feedback.tsx b/src/components/Feedback.tsx
deleted file mode 100644
index 1b03d2eb..00000000
--- a/src/components/Feedback.tsx
+++ /dev/null
@@ -1,95 +0,0 @@
-import { ReactElement, useEffect, useState } from 'react'
-import * as Sentry from '@sentry/react'
-import { Link } from '@material-ui/core'
-import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'
-import MessageSquare from 'remixicon-react/Message2LineIcon'
-
-import config from '../config'
-import SideBarItem from './SideBarItem'
-
-const useStyles = makeStyles((theme: Theme) =>
- createStyles({
- link: {
- color: '#9f9f9f',
- textDecoration: 'none',
- '&:hover': {
- textDecoration: 'none',
-
- // https://github.com/mui-org/material-ui/issues/22543
- '@media (hover: none)': {
- textDecoration: 'none',
- },
- },
- },
-
- icon: {
- height: theme.spacing(4),
- },
- }),
-)
-
-/**
- * Parses Sentry DNS so it could be transformed into API call
- * Sentry DNS like https://1asfasdf2312asdf3@o132123.ingest.sentry.io/13123123
- */
-const SENTRY_PARSING_REGEX = /^https:\/\/(?\w+)@(?\w+)\.ingest\.sentry\.io\/(?\d+)$/gm
-
-async function isSentryReachable(): Promise {
- const key = config.SENTRY_KEY
-
- if (!key) {
- return false
- }
-
- const match = SENTRY_PARSING_REGEX.exec(key)
-
- if (!match) {
- return false
- }
-
- const url = `https://${match.groups?.sub}.ingest.sentry.io/api/${match.groups?.path}/envelope/?sentry_key=${match.groups?.key}`
-
- try {
- await fetch(url, { method: 'POST' })
-
- // Since we got some reply (even though most probably with some error) that means Sentry is reachable ==> lets provide the Feedback form
- return true
- } catch (e) {
- // If an error was thrown than the request was blocked by the browser so Sentry is not accessible to us
- return false
- }
-}
-
-function showFeedbackForm(): void {
- const eventId = Sentry.captureMessage('User feedback')
- Sentry.showReportDialog({
- eventId,
- title: 'Provide us feedback!',
- subtitle: 'Share with us what you like and/or dislike.',
- subtitle2: 'We will be very happy.',
- labelComments: 'What is your impression about this app?',
- labelSubmit: 'Send Feedback',
- })
-}
-
-export default function Feedback(): ReactElement {
- const [sentryEnabled, setSentryEnabled] = useState(false)
- const classes = useStyles()
-
- // Run this only on component mount to verify once that Sentry is reachable
- useEffect(() => {
- isSentryReachable().then(result => {
- setSentryEnabled(result)
- })
- }, [])
-
- if (sentryEnabled) {
- return (
-
- } label={Send feedback} />
-
- )
- }
-
- return <>>
-}
diff --git a/src/components/SideBar.tsx b/src/components/SideBar.tsx
index be7d82fb..9f14d54d 100644
--- a/src/components/SideBar.tsx
+++ b/src/components/SideBar.tsx
@@ -14,7 +14,6 @@ import DashboardLogo from '../assets/dashboard-logo.svg'
import DesktopLogo from '../assets/desktop-logo.svg'
import { config } from '../config'
import { ROUTES } from '../routes'
-import Feedback from './Feedback'
import SideBarItem from './SideBarItem'
import SideBarStatus from './SideBarStatus'
import { BeeModes } from '@ethersphere/bee-js'
@@ -133,7 +132,6 @@ export default function SideBar(): ReactElement {
-
diff --git a/src/config.ts b/src/config.ts
index 9c7603d7..1d7c52ab 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -7,14 +7,10 @@ class Config {
public readonly GITHUB_REPO_URL: string
public readonly BEE_DESKTOP_ENABLED: boolean
public readonly BEE_DESKTOP_URL: string
- public readonly SENTRY_KEY: string | undefined
- public readonly SENTRY_ENVIRONMENT: string | undefined
public readonly DEFAULT_RPC_URL: string
constructor() {
this.BEE_API_HOST = sessionStorage.getItem('api_host') ?? process.env.REACT_APP_BEE_HOST ?? 'http://localhost:1633'
- this.SENTRY_KEY = process.env.REACT_APP_SENTRY_KEY
- this.SENTRY_ENVIRONMENT = process.env.REACT_APP_SENTRY_ENVIRONMENT
this.BEE_DEBUG_API_HOST =
sessionStorage.getItem('debug_api_host') ?? process.env.REACT_APP_BEE_DEBUG_HOST ?? 'http://localhost:1635'
this.BLOCKCHAIN_EXPLORER_URL =
diff --git a/src/layout/Dashboard.tsx b/src/layout/Dashboard.tsx
index 161be1e4..e6b67621 100644
--- a/src/layout/Dashboard.tsx
+++ b/src/layout/Dashboard.tsx
@@ -7,9 +7,6 @@ import ErrorBoundary from '../components/ErrorBoundary'
import SideBar from '../components/SideBar'
import { Context as BeeContext } from '../providers/Bee'
import { Context as SettingsContext } from '../providers/Settings'
-import config from '../config'
-import * as Sentry from '@sentry/react'
-import ItsBroken from './ItsBroken'
import { useNewBeeDesktopVersion } from '../hooks/apiHooks'
import { BEE_DESKTOP_LATEST_RELEASE_PAGE } from '../utils/desktop'
@@ -117,25 +114,13 @@ const Dashboard = (props: Props): ReactElement => {
>
)
- let errorBoundaryWithContent
-
- if (config.SENTRY_KEY) {
- errorBoundaryWithContent = (
- }
- >
- {content}
-
- )
- } else {
- errorBoundaryWithContent = {content}
- }
-
return (
- {errorBoundaryWithContent}
+
+ {' '}
+ {content}
+
)
}
diff --git a/src/layout/ItsBroken.tsx b/src/layout/ItsBroken.tsx
deleted file mode 100644
index afff9507..00000000
--- a/src/layout/ItsBroken.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { Container } from '@material-ui/core'
-import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'
-import { ReactElement } from 'react'
-
-const useStyles = makeStyles((theme: Theme) =>
- createStyles({
- content: {
- backgroundColor: theme.palette.background.default,
- minHeight: '100vh',
- textAlign: 'center',
- },
- errorMsg: {
- marginTop: '30px',
- },
- }),
-)
-
-interface Props {
- message: string
-}
-
-// TODO: Provide some nicer design
-const ItsBroken = ({ message }: Props): ReactElement => {
- const classes = useStyles()
-
- return (
-
-
- Ups, there was a problem 😅
- Error: {message}
-
-
- )
-}
-
-export default ItsBroken
diff --git a/src/utils/sentry.ts b/src/utils/sentry.ts
deleted file mode 100644
index 5f5cf0ef..00000000
--- a/src/utils/sentry.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { config } from '../config'
-import * as Sentry from '@sentry/react'
-import packageJson from '../../package.json'
-import { BrowserTracing } from '@sentry/tracing'
-import { getBeeDesktopLogs, getBeeLogs } from './desktop'
-
-export async function initSentry(): Promise {
- let tunnelAvailable
-
- try {
- const result = await fetch(`${config.BEE_DESKTOP_URL}/sentry`, { method: 'OPTIONS' })
-
- if (result.status === 204) {
- tunnelAvailable = true
- }
- } catch (e) {
- // There was an error, so tunnel is not available
- tunnelAvailable = false
- }
-
- Sentry.init({
- dsn: config.SENTRY_KEY,
- release: packageJson.version,
- environment: config.SENTRY_ENVIRONMENT,
- tunnel: tunnelAvailable ? `${config.BEE_DESKTOP_URL}/sentry` : undefined,
- integrations: [new BrowserTracing({ tracingOrigins: [config.BEE_DESKTOP_URL] })],
- tracesSampleRate: 0.4,
- beforeSend: async (event, hint) => {
- hint.attachments = []
-
- try {
- // This will fail if we are not running in Bee Desktop, but that is alright
- hint.attachments.push({ filename: 'bee-desktop.log', data: await getBeeDesktopLogs() })
- // eslint-disable-next-line no-empty
- } catch (e) {}
-
- try {
- // This will fail if we are not running in Bee Desktop, but that is alright
- hint.attachments.push({ filename: 'bee.log', data: await getBeeLogs() })
- // eslint-disable-next-line no-empty
- } catch (e) {}
-
- return event
- },
- })
-}