Skip to content

Commit 2caf247

Browse files
authored
Merge pull request #1497 from curvefi/fix/price-addresses-loading-dex
fix: chip token USD rate loading indefinitely on hover
2 parents 1b50332 + 414fe5d commit 2caf247

File tree

3 files changed

+29
-15
lines changed

3 files changed

+29
-15
lines changed

apps/main/src/dex/components/ChipPool.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ const ChipPoolAdditionalInfo = styled.span`
8686
transition: max-width 1s;
8787
white-space: nowrap;
8888
overflow: hidden;
89+
margin-left: 4px;
8990
`
9091

9192
const ChipPoolWrapper = styled.span`

apps/main/src/dex/components/ChipToken.tsx

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useMemo, useRef, useState } from 'react'
1+
import { useCallback, useMemo, useRef, useState } from 'react'
22
import type { AriaButtonProps } from 'react-aria'
33
import { useButton } from 'react-aria'
44
import { styled } from 'styled-components'
@@ -7,7 +7,7 @@ import Icon from '@ui/Icon'
77
import Spinner from '@ui/Spinner'
88
import { FORMAT_OPTIONS, formatNumber } from '@ui/utils'
99
import { fetchTokenUsdRate } from '@ui-kit/lib/model/entities/token-usd-rate'
10-
import { copyToClipboard } from '@ui-kit/utils'
10+
import { copyToClipboard, shortenAddress } from '@ui-kit/utils'
1111

1212
interface ButtonProps extends AriaButtonProps {
1313
className?: string
@@ -50,11 +50,11 @@ const ChipToken = ({ className, isHighlight, tokenName, tokenAddress, ...props }
5050
const [usdRate, setUsdRate] = useState<number | undefined>(undefined)
5151
const parsedUsdRate = formatNumber(usdRate, { ...FORMAT_OPTIONS.USD, defaultValue: '-' })
5252

53-
const handleMouseEnter = (foundUsdRate?: string) => {
54-
if (!foundUsdRate) {
53+
const handleMouseEnter = useCallback(() => {
54+
if (usdRate == null) {
5555
void fetchTokenUsdRate({ chainId, tokenAddress }).then(setUsdRate)
5656
}
57-
}
57+
}, [usdRate, chainId, tokenAddress])
5858

5959
const parsedTokenName = useMemo(() => {
6060
if (tokenName && tokenName.length > 10) {
@@ -64,18 +64,28 @@ const ChipToken = ({ className, isHighlight, tokenName, tokenAddress, ...props }
6464
}, [tokenName])
6565

6666
return (
67-
<ChipTokenWrapper className={className} onMouseEnter={() => handleMouseEnter(parsedUsdRate)}>
67+
<ChipTokenWrapper className={className} onMouseEnter={handleMouseEnter}>
6868
<span>{isHighlight ? <strong>{parsedTokenName}</strong> : parsedTokenName} </span>
6969
<ChipTokenAdditionalInfo>
7070
<Button {...props} onPress={() => copyToClipboard(tokenAddress)}>
71-
<ChipTokenUsdRate>{typeof usdRate === 'undefined' ? <Spinner size={10} /> : parsedUsdRate}</ChipTokenUsdRate>
72-
<ChipTokenCopyButtonIcon name="Copy" size={16} />
71+
<AlignmentWrapper>
72+
<ChipTokenUsdRate>
73+
{usdRate == null ? <ChipTokenUsdRateSpinner size={10} /> : parsedUsdRate}
74+
</ChipTokenUsdRate>
75+
<ChipTokenAddress>{shortenAddress(tokenAddress)}</ChipTokenAddress>
76+
<ChipTokenCopyButtonIcon name="Copy" size={16} />
77+
</AlignmentWrapper>
7378
</Button>
7479
</ChipTokenAdditionalInfo>
7580
</ChipTokenWrapper>
7681
)
7782
}
7883

84+
const AlignmentWrapper = styled.div`
85+
display: flex;
86+
gap: 4px;
87+
align-items: end;
88+
`
7989
const ChipTokenAdditionalInfo = styled.span`
8090
align-items: center;
8191
max-width: 0;
@@ -101,19 +111,22 @@ const ChipTokenWrapper = styled.span`
101111
}
102112
}
103113
`
114+
const ChipTokenAddress = styled.span`
115+
font-family: var(--font-mono);
116+
font-size: var(--font-size-2);
117+
margin-bottom: 2px;
118+
`
104119

105120
const ChipTokenUsdRate = styled.span`
106-
margin: 0 2px;
107-
position: relative;
108-
top: -2px;
109121
font-size: var(--font-size-1);
110122
font-weight: bold;
123+
margin-bottom: 2px;
111124
`
112125

126+
const ChipTokenUsdRateSpinner = styled(Spinner)``
127+
113128
const ChipTokenCopyButtonIcon = styled(Icon)`
114-
position: relative;
115-
top: 1px;
116-
margin: 0 2px;
129+
margin-bottom: 2px;
117130
`
118131

119132
export default ChipToken

packages/ui/src/Spinner/Spinner.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ function getSpinnerColor(isDisabled: boolean) {
6363
if (isDisabled) {
6464
return 'var(--input--disabled--color)'
6565
} else {
66-
return 'var(--border-400)'
66+
return 'var(--spinner--background-color)'
6767
}
6868
}
6969

0 commit comments

Comments
 (0)