{
it('renders unknown token', () => {
const { asFragment } = render(
)
diff --git a/apps/web/src/components/Table/styled.tsx b/apps/web/src/components/Table/styled.tsx
index 363abb511d9..67125a6e9c2 100644
--- a/apps/web/src/components/Table/styled.tsx
+++ b/apps/web/src/components/Table/styled.tsx
@@ -6,9 +6,10 @@ import { HideScrollBarStyles } from 'components/Common'
import Row from 'components/Row'
import { useAbbreviatedTimeString } from 'components/Table/utils'
import { MouseoverTooltip, TooltipSize } from 'components/Tooltip'
-import { NATIVE_CHAIN_ID, nativeOnChain } from 'constants/tokens'
+import { NATIVE_CHAIN_ID } from 'constants/tokens'
import { OrderDirection, getTokenDetailsURL, supportedChainIdFromGQLChain, unwrapToken } from 'graphql/data/util'
import { OrderDirection as TheGraphOrderDirection } from 'graphql/thegraph/__generated__/types-and-hooks'
+import { useCurrency } from 'hooks/Tokens'
import { useActiveLocale } from 'hooks/useActiveLocale'
import { Trans } from 'i18n'
import { ArrowDown, CornerLeftUp, ExternalLink as ExternalLinkIcon } from 'react-feather'
@@ -142,12 +143,12 @@ export const CellContainer = styled.div`
export const StyledExternalLink = styled(ExternalLink)`
text-decoration: none;
${ClickableStyle}
- color: ${({ theme }) => theme.neutral1}
+ color: ${({ theme }) => theme.neutral1};
`
const StyledInternalLink = styled(Link)`
text-decoration: none;
${ClickableStyle}
- color: ${({ theme }) => theme.neutral1}
+ color: ${({ theme }) => theme.neutral1};
`
export const TableRowLink = styled(Link)`
@@ -243,7 +244,7 @@ export const TokenLinkCell = ({ token }: { token: Token }) => {
const chainId = supportedChainIdFromGQLChain(token.chain) ?? ChainId.MAINNET
const unwrappedToken = unwrapToken(chainId, token)
const isNative = unwrappedToken.address === NATIVE_CHAIN_ID
- const nativeCurrency = nativeOnChain(chainId)
+ const nativeCurrency = useCurrency(NATIVE_CHAIN_ID, chainId)
return (
)
- case WARNING_LEVEL.UNKNOWN:
+ case SafetyLevel.StrongWarning:
return (
diff --git a/apps/web/src/components/TokenSafety/TokenSafetyLabel.tsx b/apps/web/src/components/TokenSafety/TokenSafetyLabel.tsx
index 661a97ead8b..92e5aba2ef7 100644
--- a/apps/web/src/components/TokenSafety/TokenSafetyLabel.tsx
+++ b/apps/web/src/components/TokenSafety/TokenSafetyLabel.tsx
@@ -1,9 +1,9 @@
-import { WARNING_LEVEL } from 'constants/tokenSafety'
import { useTokenWarningColor, useTokenWarningTextColor } from 'hooks/useTokenWarningColor'
import { ReactNode } from 'react'
import { AlertTriangle, Slash } from 'react-feather'
import { Text } from 'rebass'
import styled from 'styled-components'
+import { SafetyLevel } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks'
const Label = styled.div<{ color: string; backgroundColor: string }>`
padding: 4px 4px;
@@ -22,7 +22,7 @@ const Title = styled(Text)`
`
type TokenWarningLabelProps = {
- level: WARNING_LEVEL
+ level: SafetyLevel
canProceed: boolean
children: ReactNode
}
diff --git a/apps/web/src/components/TokenSafety/index.tsx b/apps/web/src/components/TokenSafety/index.tsx
index 126b1e52bb2..4ec2b9a3108 100644
--- a/apps/web/src/components/TokenSafety/index.tsx
+++ b/apps/web/src/components/TokenSafety/index.tsx
@@ -4,11 +4,11 @@ import { AutoColumn } from 'components/Column'
import CurrencyLogo from 'components/Logo/CurrencyLogo'
import TokenSafetyLabel from 'components/TokenSafety/TokenSafetyLabel'
import {
- checkWarning,
displayWarningLabel,
getWarningCopy,
- NotFoundWarning,
+ StrongWarning,
TOKEN_SAFETY_ARTICLE,
+ useTokenWarning,
Warning,
} from 'constants/tokenSafety'
import { useToken } from 'hooks/Tokens'
@@ -215,10 +215,10 @@ export default function TokenSafety({
const logos = []
const urls = []
- const token1Warning = tokenAddress ? checkWarning(tokenAddress) : undefined
const token1 = useToken(tokenAddress)
- const token2Warning = secondTokenAddress ? checkWarning(secondTokenAddress) : undefined
+ const token1Warning = useTokenWarning(tokenAddress, token1?.chainId)
const token2 = useToken(secondTokenAddress)
+ const token2Warning = useTokenWarning(secondTokenAddress, token2?.chainId)
const token1Unsupported = !token1Warning?.canProceed
const token2Unsupported = !token2Warning?.canProceed
@@ -289,14 +289,14 @@ export default function TokenSafety({
-
+
{heading} {description} {learnMoreUrl}
-
+
)
diff --git a/apps/web/src/components/Tokens/TokenDetails/TokenDescription.test.tsx b/apps/web/src/components/Tokens/TokenDetails/TokenDescription.test.tsx
index 2f17069c4b1..7f2a52c0078 100644
--- a/apps/web/src/components/Tokens/TokenDetails/TokenDescription.test.tsx
+++ b/apps/web/src/components/Tokens/TokenDetails/TokenDescription.test.tsx
@@ -9,13 +9,8 @@ import { validTokenProjectResponse } from 'test-utils/tokens/fixtures'
import { Chain } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks'
import { TokenDescription } from './TokenDescription'
-jest.mock('hooks/Tokens', () => {
- const originalModule = jest.requireActual('hooks/Tokens')
- return {
- ...originalModule,
- useCurrency: jest.fn(),
- }
-})
+jest.mock('hooks/Tokens')
+
jest.mock('pages/TokenDetails/TDPContext', () => ({
useTDPContext: jest.fn(),
}))
diff --git a/apps/web/src/components/Tokens/TokenDetails/TokenDetailsHeader.tsx b/apps/web/src/components/Tokens/TokenDetails/TokenDetailsHeader.tsx
index ab831e6a961..87d37af802e 100644
--- a/apps/web/src/components/Tokens/TokenDetails/TokenDetailsHeader.tsx
+++ b/apps/web/src/components/Tokens/TokenDetails/TokenDetailsHeader.tsx
@@ -139,7 +139,7 @@ export const TokenDetailsHeader = () => {
currency.isNative ? ExplorerDataType.NATIVE : ExplorerDataType.TOKEN
)
- const { homepageUrl, twitterName, logoUrl } = tokenQuery.data?.token?.project ?? {}
+ const { homepageUrl, twitterName } = tokenQuery.data?.token?.project ?? {}
const twitterUrl = twitterName && `https://x.com/${twitterName}`
const currentLocation = window.location.href
@@ -154,7 +154,7 @@ export const TokenDetailsHeader = () => {
return (
<>
-
+
{currency.name ?? Name not found}
{tokenSymbolName}
diff --git a/apps/web/src/components/Tokens/TokenDetails/index.tsx b/apps/web/src/components/Tokens/TokenDetails/index.tsx
index c0f177b9755..e1197d2aab3 100644
--- a/apps/web/src/components/Tokens/TokenDetails/index.tsx
+++ b/apps/web/src/components/Tokens/TokenDetails/index.tsx
@@ -11,7 +11,6 @@ import StatsSection from 'components/Tokens/TokenDetails/StatsSection'
import { NATIVE_CHAIN_ID } from 'constants/tokens'
import { getTokenDetailsURL } from 'graphql/data/util'
import { useCurrency } from 'hooks/Tokens'
-import { getInitialUrl } from 'hooks/useAssetLogoSource'
import useParsedQueryString from 'hooks/useParsedQueryString'
import { useScreenSize } from 'hooks/useScreenSize'
import { Trans } from 'i18n'
@@ -23,6 +22,7 @@ import { useNavigate } from 'react-router-dom'
import { CurrencyState } from 'state/swap/types'
import styled from 'styled-components'
import { addressesAreEquivalent } from 'utils/addressesAreEquivalent'
+import { getInitialLogoUrl } from 'utils/getInitialLogoURL'
import { ActivitySection } from './ActivitySection'
import BalanceSummary from './BalanceSummary'
import MobileBalanceSummaryFooter from './MobileBalanceSummaryFooter'
@@ -95,7 +95,7 @@ function TDPSwapComponent() {
if (!newDefaultToken) return
- const preloadedLogoSrc = getInitialUrl(
+ const preloadedLogoSrc = getInitialLogoUrl(
newDefaultToken.wrapped.address,
newDefaultToken.chainId,
newDefaultToken.isNative
diff --git a/apps/web/src/components/Tokens/TokenDetails/tables/TokenDetailsPoolsTable.test.tsx b/apps/web/src/components/Tokens/TokenDetails/tables/TokenDetailsPoolsTable.test.tsx
index ee03b68ea82..a6afde295a3 100644
--- a/apps/web/src/components/Tokens/TokenDetails/tables/TokenDetailsPoolsTable.test.tsx
+++ b/apps/web/src/components/Tokens/TokenDetails/tables/TokenDetailsPoolsTable.test.tsx
@@ -1,3 +1,5 @@
+import 'test-utils/tokens/mocks'
+
import { ApolloError } from '@apollo/client'
import { ChainId, Percent, Token } from '@uniswap/sdk-core'
import { TokenDetailsPoolsTable } from 'components/Tokens/TokenDetails/tables/TokenDetailsPoolsTable'
diff --git a/apps/web/src/components/Tokens/TokenDetails/tables/__snapshots__/TokenDetailsPoolsTable.test.tsx.snap b/apps/web/src/components/Tokens/TokenDetails/tables/__snapshots__/TokenDetailsPoolsTable.test.tsx.snap
index a4e4600c54e..0f72d835553 100644
--- a/apps/web/src/components/Tokens/TokenDetails/tables/__snapshots__/TokenDetailsPoolsTable.test.tsx.snap
+++ b/apps/web/src/components/Tokens/TokenDetails/tables/__snapshots__/TokenDetailsPoolsTable.test.tsx.snap
@@ -627,7 +627,7 @@ exports[`TDPPoolTable renders data filled state 1`] = `
diff --git a/apps/web/src/components/WalletModal/useOrderedConnections.test.ts b/apps/web/src/components/WalletModal/useOrderedConnections.test.ts
index 3e9d219806b..4b908d74b8a 100644
--- a/apps/web/src/components/WalletModal/useOrderedConnections.test.ts
+++ b/apps/web/src/components/WalletModal/useOrderedConnections.test.ts
@@ -7,8 +7,8 @@ import { useAppDispatch } from 'state/hooks'
import { updateRecentConnectionMeta } from 'state/user/reducer'
import { mocked } from 'test-utils/mocked'
import { act, render, renderHook } from 'test-utils/render'
-import { FeatureFlags } from 'uniswap/src/features/experiments/flags'
-import { useFeatureFlag } from 'uniswap/src/features/experiments/hooks'
+import { FeatureFlags } from 'uniswap/src/features/statsig/flags'
+import { useFeatureFlag } from 'uniswap/src/features/statsig/hooks'
import { v4 as uuidv4 } from 'uuid'
import { useOrderedConnections } from './useOrderedConnections'
diff --git a/apps/web/src/components/WalletModal/useOrderedConnections.tsx b/apps/web/src/components/WalletModal/useOrderedConnections.tsx
index ef7939baf47..410ad2468c4 100644
--- a/apps/web/src/components/WalletModal/useOrderedConnections.tsx
+++ b/apps/web/src/components/WalletModal/useOrderedConnections.tsx
@@ -4,8 +4,8 @@ import { Connection, ConnectionType, RecentConnectionMeta } from 'connection/typ
import { shouldUseDeprecatedInjector } from 'connection/utils'
import { useMemo } from 'react'
import { useAppSelector } from 'state/hooks'
-import { FeatureFlags } from 'uniswap/src/features/experiments/flags'
-import { useFeatureFlag } from 'uniswap/src/features/experiments/hooks'
+import { FeatureFlags } from 'uniswap/src/features/statsig/flags'
+import { useFeatureFlag } from 'uniswap/src/features/statsig/hooks'
import Option from './Option'
export function useEIP6963Connections() {
diff --git a/apps/web/src/components/Web3Provider/index.tsx b/apps/web/src/components/Web3Provider/index.tsx
index 5d3ee96abd8..3263efa440e 100644
--- a/apps/web/src/components/Web3Provider/index.tsx
+++ b/apps/web/src/components/Web3Provider/index.tsx
@@ -9,8 +9,8 @@ import usePrevious from 'hooks/usePrevious'
import { ReactNode, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
import { useConnectedWallets } from 'state/wallets/hooks'
-import { FeatureFlags } from 'uniswap/src/features/experiments/flags'
-import { useFeatureFlag } from 'uniswap/src/features/experiments/hooks'
+import { FeatureFlags } from 'uniswap/src/features/statsig/flags'
+import { useFeatureFlag } from 'uniswap/src/features/statsig/hooks'
import { getCurrentPageFromLocation } from 'utils/urlRoutes'
import { getWalletMeta } from 'utils/walletMeta'
diff --git a/apps/web/src/components/addLiquidity/OutOfSyncWarning.tsx b/apps/web/src/components/addLiquidity/OutOfSyncWarning.tsx
index 5d56d3f26b7..b283d04047f 100644
--- a/apps/web/src/components/addLiquidity/OutOfSyncWarning.tsx
+++ b/apps/web/src/components/addLiquidity/OutOfSyncWarning.tsx
@@ -1,7 +1,9 @@
import Column from 'components/Column'
import Row from 'components/Row'
+import { SupportArticleURL } from 'constants/supportArticles'
import { Trans } from 'i18n'
import styled from 'styled-components'
+import { ExternalLink } from 'theme/components'
import { AlertTriangle } from 'ui/src/components/icons/AlertTriangle'
import { Text } from 'ui/src/components/text/Text'
import { iconSizes } from 'ui/src/theme'
@@ -13,6 +15,7 @@ const Container = styled.div`
padding: 12px;
border-radius: 20px;
border: 1px solid ${({ theme }) => theme.surface3};
+ background: ${({ theme }) => theme.surface2};
`
const StyledColumn = styled(Column)`
height: 100%;
@@ -22,7 +25,7 @@ const IconContainer = styled.div`
width: 40px;
padding: 10px;
border-radius: 12px;
- background: ${({ theme }) => theme.surface3};
+ background: ${({ theme }) => theme.critical2};
`
export function OutOfSyncWarning() {
return (
@@ -30,19 +33,24 @@ export function OutOfSyncWarning() {