Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
interface
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
LuckySwap
interface
Commits
746db53f
Commit
746db53f
authored
Jan 15, 2025
by
Uniswap Labs Service Account
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ci(release): publish latest release
parent
068c4cd0
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
72 deletions
+32
-72
RELEASE
RELEASE
+7
-53
VERSION
VERSION
+1
-1
index.tsx
apps/web/src/components/Tokens/TokenTable/index.tsx
+19
-17
topTokens.ts
apps/web/src/state/explore/topTokens.ts
+5
-1
No files found.
RELEASE
View file @
746db53f
IPFS hash of the deployment:
IPFS hash of the deployment:
- CIDv0: `Qm
XkPV7sagZDwbUR5PRBNWAvFrJSuTUh5Fu1aJpFA1whLV
`
- CIDv0: `Qm
NtGELVTA6qcn1ftK8VnJE1wz8yZdDQC89cs6dK6hHs1i
`
- CIDv1: `bafybei
elzxuhhhlrf7rtyfrqtzqawka7oyjb3qklvfvcexvwdumpsnujdi
`
- CIDv1: `bafybei
aidevumwytkxmfm5otaerhlvgpiawod6owbx5wayykk5ghg5vj2e
`
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
...
@@ -10,61 +10,15 @@ You can also access the Uniswap Interface from an IPFS gateway.
...
@@ -10,61 +10,15 @@ You can also access the Uniswap Interface from an IPFS gateway.
Your Uniswap settings are never remembered across different URLs.
Your Uniswap settings are never remembered across different URLs.
IPFS gateways:
IPFS gateways:
- https://bafybei
elzxuhhhlrf7rtyfrqtzqawka7oyjb3qklvfvcexvwdumpsnujdi
.ipfs.dweb.link/
- https://bafybei
aidevumwytkxmfm5otaerhlvgpiawod6owbx5wayykk5ghg5vj2e
.ipfs.dweb.link/
- https://bafybei
elzxuhhhlrf7rtyfrqtzqawka7oyjb3qklvfvcexvwdumpsnujdi
.ipfs.cf-ipfs.com/
- https://bafybei
aidevumwytkxmfm5otaerhlvgpiawod6owbx5wayykk5ghg5vj2e
.ipfs.cf-ipfs.com/
- [ipfs://Qm
XkPV7sagZDwbUR5PRBNWAvFrJSuTUh5Fu1aJpFA1whLV/](ipfs://QmXkPV7sagZDwbUR5PRBNWAvFrJSuTUh5Fu1aJpFA1whLV
/)
- [ipfs://Qm
NtGELVTA6qcn1ftK8VnJE1wz8yZdDQC89cs6dK6hHs1i/](ipfs://QmNtGELVTA6qcn1ftK8VnJE1wz8yZdDQC89cs6dK6hHs1i
/)
## 5.65.0 (2025-01-15)
### 5.65.1 (2025-01-15)
### Features
* **web:** [EW] Add passkey sign in (#13883) 01fd45c
* **web:** [EW] Add show recovery phrase modal (#13894) 05748a7
* **web:** [EW] Add sign up (#13862) aa9771e
* **web:** [EW] Add signing txs (#13890) c779f0c
* **web:** add the v4 whitepaper (#14867) e87e686
* **web:** delete unused background updating code (#14612) aa26058
* **web:** replace usage of DoubleLogoWithChain with DoubleLogo (#15011) e723da8
* **web:** update uniswapx-sdk (#14654) ab645c7
* **web:** use dynamic config for blocked nft collections (#14643) a748576
### Bug Fixes
### Bug Fixes
* **web:** 5859 get position owner from get position call (#14729) b412b95
* **web:** explore table should use chainId in ranking (#15144) 3834990
* **web:** align chart headers in explore (#14830) 4a2e838
* **web:** consistent lp buttons (#14664) 4c3c0d9
* **web:** eth logo flash (#15013) 486ab05
* **web:** filter toggle behavior on TDP (#14898) dbebd9a
* **web:** fix crash on v4 create (#14891) 53b84d8
* **web:** fix double logo on DoubleCurrencyAndChainLogo (#14946) 0579dcf
* **web:** fix infinite loop on analytics toggle f4b5fde
* **web:** fix infinite loop on analytics toggle (#15068) ad1a014
* **web:** fix pdp price display (#14902) 2f00216
* **web:** fix range display for v4 positions in custom fee tiers (#14904) 3be2db0
* **web:** hero title bug when switching languages (#15022) d6511f5
* **web:** inverted initial price bug (#14994) 017e47e
* **web:** limit orders do not work with uniswapx v2 (#14995) b492069
* **web:** make the swap primary colors on the tdp use token extraction colors (#14696) ea7f43b
* **web:** move both price toggles together in the create flow (#14971) 8d8f595
* **web:** re-add images prop to PortfolioLogo and use split logo (#14864) 840edff
* **web:** reduce size impact of ui icons (#14613) f89a87e
* **web:** remove direct t imports and fix translations outside of React context on web (#14829) e040834
* **web:** remove worldchain minikit provider (#14544) 6794856
* **web:** scroll on nav dropdown and adjust max height (#15094) 3bbd575
* **web:** send speed bump font size fix (#15004) 0bd82df
* **web:** update google conversion datetime format (#15131) 6a7ca9a
* **web:** update input behavior on send tab (#14843) 8c4eab7
### Continuous Integration
* **web:** update sitemaps 8e5f49e
### Styles
* **web:** round ends of loading spinner component (#14779) 26b3a8b
VERSION
View file @
746db53f
web/5.65.0
web/5.65.1
\ No newline at end of file
\ No newline at end of file
apps/web/src/components/Tokens/TokenTable/index.tsx
View file @
746db53f
...
@@ -18,7 +18,6 @@ import {
...
@@ -18,7 +18,6 @@ import {
useSetSortMethod
,
useSetSortMethod
,
}
from
'
components/Tokens/state
'
}
from
'
components/Tokens/state
'
import
{
MouseoverTooltip
}
from
'
components/Tooltip
'
import
{
MouseoverTooltip
}
from
'
components/Tooltip
'
import
{
NATIVE_CHAIN_ID
}
from
'
constants/tokens
'
import
{
SparklineMap
}
from
'
graphql/data/types
'
import
{
SparklineMap
}
from
'
graphql/data/types
'
import
{
OrderDirection
,
getTokenDetailsURL
,
unwrapToken
}
from
'
graphql/data/util
'
import
{
OrderDirection
,
getTokenDetailsURL
,
unwrapToken
}
from
'
graphql/data/util
'
import
useSimplePagination
from
'
hooks/useSimplePagination
'
import
useSimplePagination
from
'
hooks/useSimplePagination
'
...
@@ -30,7 +29,9 @@ import { useTopTokens as useRestTopTokens } from 'state/explore/topTokens'
...
@@ -30,7 +29,9 @@ import { useTopTokens as useRestTopTokens } from 'state/explore/topTokens'
import
{
TokenStat
}
from
'
state/explore/types
'
import
{
TokenStat
}
from
'
state/explore/types
'
import
{
Flex
,
Text
,
styled
}
from
'
ui/src
'
import
{
Flex
,
Text
,
styled
}
from
'
ui/src
'
import
{
useEnabledChains
}
from
'
uniswap/src/features/chains/hooks/useEnabledChains
'
import
{
useEnabledChains
}
from
'
uniswap/src/features/chains/hooks/useEnabledChains
'
import
{
toGraphQLChain
}
from
'
uniswap/src/features/chains/utils
'
import
{
UniverseChainId
}
from
'
uniswap/src/features/chains/types
'
import
{
fromGraphQLChain
,
toGraphQLChain
}
from
'
uniswap/src/features/chains/utils
'
import
{
buildCurrencyId
}
from
'
uniswap/src/utils/currencyId
'
import
{
getChainIdFromChainUrlParam
}
from
'
utils/chainParams
'
import
{
getChainIdFromChainUrlParam
}
from
'
utils/chainParams
'
import
{
NumberType
,
useFormatter
}
from
'
utils/formatNumbers
'
import
{
NumberType
,
useFormatter
}
from
'
utils/formatNumbers
'
...
@@ -76,13 +77,13 @@ function TokenDescription({ token }: { token: TokenStat }) {
...
@@ -76,13 +77,13 @@ function TokenDescription({ token }: { token: TokenStat }) {
return
(
return
(
<
Flex
row
gap=
"$gap8"
>
<
Flex
row
gap=
"$gap8"
>
<
QueryTokenLogo
token=
{
token
}
size=
{
28
}
/>
<
QueryTokenLogo
token=
{
token
}
size=
{
28
}
/>
<
EllipsisText
data
-
testid=
"token-name"
>
{
token
?.
name
??
token
?
.
project
?.
name
}
</
EllipsisText
>
<
EllipsisText
data
-
testid=
"token-name"
>
{
token
.
name
??
token
.
project
?.
name
}
</
EllipsisText
>
<
TokenTableText
<
TokenTableText
$platform
-
web=
{
{
$platform
-
web=
{
{
minWidth
:
'
fit-content
'
,
minWidth
:
'
fit-content
'
,
}
}
}
}
>
>
{
token
?
.
symbol
}
{
token
.
symbol
}
</
TokenTableText
>
</
TokenTableText
>
</
Flex
>
</
Flex
>
)
)
...
@@ -170,17 +171,18 @@ function TokenTable({
...
@@ -170,17 +171,18 @@ function TokenTable({
const
tokenTableValues
:
TokenTableValue
[]
|
undefined
=
useMemo
(
const
tokenTableValues
:
TokenTableValue
[]
|
undefined
=
useMemo
(
()
=>
()
=>
tokens
?.
map
((
token
,
i
)
=>
{
tokens
?.
map
((
token
,
i
)
=>
{
const
delta1hr
=
token
?.
pricePercentChange1Hour
?.
value
const
delta1hr
=
token
.
pricePercentChange1Hour
?.
value
const
delta1d
=
token
?.
pricePercentChange1Day
?.
value
const
delta1d
=
token
.
pricePercentChange1Day
?.
value
const
tokenSortIndex
=
tokenSortRank
[
token
?.
address
??
NATIVE_CHAIN_ID
]
const
currCurrencyId
=
buildCurrencyId
(
fromGraphQLChain
(
token
.
chain
)
??
UniverseChainId
.
Mainnet
,
token
.
address
)
const
chainId
=
getChainIdFromChainUrlParam
(
token
?.
chain
.
toLowerCase
())
const
tokenSortIndex
=
tokenSortRank
[
currCurrencyId
]
const
chainId
=
getChainIdFromChainUrlParam
(
token
.
chain
.
toLowerCase
())
const
unwrappedToken
=
chainId
?
unwrapToken
(
chainId
,
token
)
:
token
const
unwrappedToken
=
chainId
?
unwrapToken
(
chainId
,
token
)
:
token
return
{
return
{
index
:
tokenSortIndex
,
index
:
tokenSortIndex
,
tokenDescription
:
<
TokenDescription
token=
{
unwrappedToken
}
/>,
tokenDescription
:
<
TokenDescription
token=
{
unwrappedToken
}
/>,
price
:
giveExploreStatDefaultValue
(
token
?
.
price
?.
value
),
price
:
giveExploreStatDefaultValue
(
token
.
price
?.
value
),
testId
:
`token-table-row-
${
unwrappedToken
?.
address
??
NATIVE_CHAIN_ID
}
`,
testId
:
`token-table-row-
${
unwrappedToken
.
address
}
`
,
percentChange1hr
:
(
percentChange1hr
:
(
<>
<>
<
DeltaArrow
delta=
{
delta1hr
}
/>
<
DeltaArrow
delta=
{
delta1hr
}
/>
...
@@ -193,8 +195,8 @@ function TokenTable({
...
@@ -193,8 +195,8 @@ function TokenTable({
<
DeltaText
delta=
{
delta1d
}
>
{
formatDelta
(
delta1d
)
}
</
DeltaText
>
<
DeltaText
delta=
{
delta1d
}
>
{
formatDelta
(
delta1d
)
}
</
DeltaText
>
</>
</>
),
),
fdv: giveExploreStatDefaultValue(token
?
.fullyDilutedValuation?.value),
fdv
:
giveExploreStatDefaultValue
(
token
.
fullyDilutedValuation
?.
value
),
volume: giveExploreStatDefaultValue(token
?
.volume?.value),
volume
:
giveExploreStatDefaultValue
(
token
.
volume
?.
value
),
sparkline
:
(
sparkline
:
(
<
SparklineContainer
>
<
SparklineContainer
>
<
ParentSize
>
<
ParentSize
>
...
@@ -204,7 +206,7 @@ function TokenTable({
...
@@ -204,7 +206,7 @@ function TokenTable({
width=
{
width
}
width=
{
width
}
height=
{
height
}
height=
{
height
}
tokenData=
{
token
}
tokenData=
{
token
}
pricePercentChange={token
?
.pricePercentChange1Day?.value}
pricePercentChange=
{
token
.
pricePercentChange1Day
?.
value
}
sparklineMap=
{
sparklines
}
sparklineMap=
{
sparklines
}
/>
/>
)
)
...
@@ -213,15 +215,15 @@ function TokenTable({
...
@@ -213,15 +215,15 @@ function TokenTable({
</
SparklineContainer
>
</
SparklineContainer
>
),
),
link
:
getTokenDetailsURL
({
link
:
getTokenDetailsURL
({
address: unwrappedToken
?
.address,
address
:
unwrappedToken
.
address
,
chain
:
toGraphQLChain
(
chainId
??
defaultChainId
),
chain
:
toGraphQLChain
(
chainId
??
defaultChainId
),
}),
}),
analytics
:
{
analytics
:
{
elementName
:
InterfaceElementName
.
TOKENS_TABLE_ROW
,
elementName
:
InterfaceElementName
.
TOKENS_TABLE_ROW
,
properties
:
{
properties
:
{
chain_id
:
chainId
,
chain_id
:
chainId
,
token_address: token
?
.address,
token_address
:
token
.
address
,
token_symbol: token
?
.symbol,
token_symbol
:
token
.
symbol
,
token_list_index
:
i
,
token_list_index
:
i
,
token_list_rank
:
tokenSortIndex
,
token_list_rank
:
tokenSortIndex
,
token_list_length
:
tokens
.
length
,
token_list_length
:
tokens
.
length
,
...
@@ -229,7 +231,7 @@ function TokenTable({
...
@@ -229,7 +231,7 @@ function TokenTable({
search_token_address_input
:
filterString
,
search_token_address_input
:
filterString
,
},
},
},
},
linkState: { preloadedLogoSrc: token
?
.logo },
linkState
:
{
preloadedLogoSrc
:
token
.
logo
},
}
}
})
??
[],
})
??
[],
[
defaultChainId
,
filterString
,
formatDelta
,
sparklines
,
timePeriod
,
tokenSortRank
,
tokens
],
[
defaultChainId
,
filterString
,
formatDelta
,
sparklines
,
timePeriod
,
tokenSortRank
,
tokens
],
...
...
apps/web/src/state/explore/topTokens.ts
View file @
746db53f
...
@@ -14,6 +14,9 @@ import { useAtomValue } from 'jotai/utils'
...
@@ -14,6 +14,9 @@ import { useAtomValue } from 'jotai/utils'
import
{
useContext
,
useMemo
}
from
'
react
'
import
{
useContext
,
useMemo
}
from
'
react
'
import
{
ExploreContext
,
giveExploreStatDefaultValue
}
from
'
state/explore
'
import
{
ExploreContext
,
giveExploreStatDefaultValue
}
from
'
state/explore
'
import
{
TokenStat
}
from
'
state/explore/types
'
import
{
TokenStat
}
from
'
state/explore/types
'
import
{
UniverseChainId
}
from
'
uniswap/src/features/chains/types
'
import
{
fromGraphQLChain
}
from
'
uniswap/src/features/chains/utils
'
import
{
buildCurrencyId
}
from
'
uniswap/src/utils/currencyId
'
import
{
getChainIdFromChainUrlParam
}
from
'
utils/chainParams
'
import
{
getChainIdFromChainUrlParam
}
from
'
utils/chainParams
'
const
TokenSortMethods
=
{
const
TokenSortMethods
=
{
...
@@ -135,9 +138,10 @@ export function useTopTokens() {
...
@@ -135,9 +138,10 @@ export function useTopTokens() {
if
(
!
cur
?.
address
)
{
if
(
!
cur
?.
address
)
{
return
acc
return
acc
}
}
const
currCurrencyId
=
buildCurrencyId
(
fromGraphQLChain
(
cur
.
chain
)
??
UniverseChainId
.
Mainnet
,
cur
.
address
)
return
{
return
{
...
acc
,
...
acc
,
[
cur
.
address
]:
i
+
1
,
[
cur
rCurrencyId
]:
i
+
1
,
}
}
},
{})
??
{},
},
{})
??
{},
[
sortedTokenStats
],
[
sortedTokenStats
],
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment