Commit 2b972070 authored by eddie's avatar eddie Committed by GitHub

feat: log errors on swap page (#6008)

* feat: log error from widget

* fix: upgrade analytics

* feat: add swap error to main Error Boundary too
parent 8f1ea32e
import { Trans } from '@lingui/macro' import { Trans } from '@lingui/macro'
import * as Sentry from '@sentry/react' import * as Sentry from '@sentry/react'
import { sendAnalyticsEvent } from '@uniswap/analytics'
import { SwapEventName } from '@uniswap/analytics-events'
import { ButtonLight, SmallButtonPrimary } from 'components/Button' import { ButtonLight, SmallButtonPrimary } from 'components/Button'
import { ChevronUpIcon } from 'nft/components/icons' import { ChevronUpIcon } from 'nft/components/icons'
import { useIsMobile } from 'nft/hooks' import { useIsMobile } from 'nft/hooks'
import React, { PropsWithChildren, useState } from 'react' import React, { PropsWithChildren, useState } from 'react'
import { Copy } from 'react-feather' import { Copy } from 'react-feather'
import { useLocation } from 'react-router-dom'
import styled from 'styled-components/macro' import styled from 'styled-components/macro'
import { isSentryEnabled } from 'utils/env' import { isSentryEnabled } from 'utils/env'
...@@ -217,13 +220,19 @@ const updateServiceWorkerInBackground = async () => { ...@@ -217,13 +220,19 @@ const updateServiceWorkerInBackground = async () => {
} }
export default function ErrorBoundary({ children }: PropsWithChildren): JSX.Element { export default function ErrorBoundary({ children }: PropsWithChildren): JSX.Element {
const { pathname } = useLocation()
return ( return (
<Sentry.ErrorBoundary <Sentry.ErrorBoundary
fallback={({ error, eventId }) => <Fallback error={error} eventId={eventId} />} fallback={({ error, eventId }) => <Fallback error={error} eventId={eventId} />}
beforeCapture={(scope) => { beforeCapture={(scope) => {
scope.setLevel('fatal') scope.setLevel('fatal')
}} }}
onError={updateServiceWorkerInBackground} onError={(error) => {
updateServiceWorkerInBackground()
if (pathname === '/swap') {
sendAnalyticsEvent(SwapEventName.SWAP_ERROR, { error })
}
}}
> >
{children} {children}
</Sentry.ErrorBoundary> </Sentry.ErrorBoundary>
......
...@@ -182,6 +182,9 @@ export default function Widget({ ...@@ -182,6 +182,9 @@ export default function Widget({
onSwapApprove={onApproveToken} onSwapApprove={onApproveToken}
onInitialSwapQuote={onInitialSwapQuote} onInitialSwapQuote={onInitialSwapQuote}
onSwapPriceUpdateAck={onSwapPriceUpdateAck} onSwapPriceUpdateAck={onSwapPriceUpdateAck}
onError={(error, errorInfo) => {
sendAnalyticsEvent(SwapEventName.SWAP_ERROR, { error, errorInfo, ...trace })
}}
/> />
{tokenSelector} {tokenSelector}
</> </>
......
...@@ -4931,15 +4931,15 @@ ...@@ -4931,15 +4931,15 @@
"@typescript-eslint/types" "5.47.0" "@typescript-eslint/types" "5.47.0"
eslint-visitor-keys "^3.3.0" eslint-visitor-keys "^3.3.0"
"@uniswap/analytics-events@^2.3.0": "@uniswap/analytics-events@^2.4.0":
version "2.3.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/@uniswap/analytics-events/-/analytics-events-2.3.0.tgz#e4d6b29633c09872be3b9b760b1a192b96368887" resolved "https://registry.yarnpkg.com/@uniswap/analytics-events/-/analytics-events-2.4.0.tgz#910f727bf4c72f5d1890f17daec4687dc44ee6c0"
integrity sha512-oShunkYEfa45RQAtl2aQfF91gfX4QirLa/fR+FyL5jfl+Ei4AZ1ihtyVjJ1VLOJlObX1p08JjlpA0yxqDwPYHw== integrity sha512-oZl2KRCSTAO8C3sxEFX6BEdGujdPs8tk/Zyx7UwOZOUDcim3mxx6rsdRvnwsAgkZAJjV9I1HSUR7JEeJmQkRmQ==
"@uniswap/analytics@^1.3.0": "@uniswap/analytics@^1.3.1":
version "1.3.0" version "1.3.1"
resolved "https://registry.yarnpkg.com/@uniswap/analytics/-/analytics-1.3.0.tgz#42de08949a7d529ebba647d76801f143792c132a" resolved "https://registry.yarnpkg.com/@uniswap/analytics/-/analytics-1.3.1.tgz#086a681fc483c08e1b3d896cce287bc162ad0c1d"
integrity sha512-cwx3HDxcqehr5uUnnAJ20lak9jA68e+l8ww/s4XxoJzedkdHz0TWXc4+ZZ2iukKEun4oU/d3clrU6u3Cu6xDpg== integrity sha512-wB8J+e9oeu+VSx3tgfA304g7MKf6zuAesFeEGKdD1pI2LNOoMQHczbnf8I8lPjPYnXxLvdbGVKRQZXWaI+jTGw==
dependencies: dependencies:
"@amplitude/analytics-browser" "^1.5.8" "@amplitude/analytics-browser" "^1.5.8"
react "^18.2.0" react "^18.2.0"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment