ci(release): publish latest release

parent 068c4cd0
IPFS hash of the deployment: IPFS hash of the deployment:
- CIDv0: `QmXkPV7sagZDwbUR5PRBNWAvFrJSuTUh5Fu1aJpFA1whLV` - CIDv0: `QmNtGELVTA6qcn1ftK8VnJE1wz8yZdDQC89cs6dK6hHs1i`
- CIDv1: `bafybeielzxuhhhlrf7rtyfrqtzqawka7oyjb3qklvfvcexvwdumpsnujdi` - CIDv1: `bafybeiaidevumwytkxmfm5otaerhlvgpiawod6owbx5wayykk5ghg5vj2e`
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://bafybeielzxuhhhlrf7rtyfrqtzqawka7oyjb3qklvfvcexvwdumpsnujdi.ipfs.dweb.link/ - https://bafybeiaidevumwytkxmfm5otaerhlvgpiawod6owbx5wayykk5ghg5vj2e.ipfs.dweb.link/
- https://bafybeielzxuhhhlrf7rtyfrqtzqawka7oyjb3qklvfvcexvwdumpsnujdi.ipfs.cf-ipfs.com/ - https://bafybeiaidevumwytkxmfm5otaerhlvgpiawod6owbx5wayykk5ghg5vj2e.ipfs.cf-ipfs.com/
- [ipfs://QmXkPV7sagZDwbUR5PRBNWAvFrJSuTUh5Fu1aJpFA1whLV/](ipfs://QmXkPV7sagZDwbUR5PRBNWAvFrJSuTUh5Fu1aJpFA1whLV/) - [ipfs://QmNtGELVTA6qcn1ftK8VnJE1wz8yZdDQC89cs6dK6hHs1i/](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
web/5.65.0 web/5.65.1
\ No newline at end of file \ No newline at end of file
...@@ -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],
......
...@@ -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, [currCurrencyId]: i + 1,
} }
}, {}) ?? {}, }, {}) ?? {},
[sortedTokenStats], [sortedTokenStats],
......
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