ci(release): publish latest release

parent ae7781f6
IPFS hash of the deployment: IPFS hash of the deployment:
- CIDv0: `QmUKDwf73MabW8XFc1EBM7rPqxs9p7sCAPaznFgrLpSJ6S` - CIDv0: `QmeKVogatGvBPKPZDiUPj87zSqgPLHKmrEHX4DvHBAKus9`
- CIDv1: `bafybeicyzcey52u465bnzqnoat6g6itt7tjmkc47mmssyzge2xif2iihc4` - CIDv1: `bafybeihnn5l2otftw3dumfziisxkaxlk2cxpwgahpicwbqqn3jrywvsnzq`
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,60 +10,15 @@ You can also access the Uniswap Interface from an IPFS gateway. ...@@ -10,60 +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://bafybeicyzcey52u465bnzqnoat6g6itt7tjmkc47mmssyzge2xif2iihc4.ipfs.dweb.link/ - https://bafybeihnn5l2otftw3dumfziisxkaxlk2cxpwgahpicwbqqn3jrywvsnzq.ipfs.dweb.link/
- https://bafybeicyzcey52u465bnzqnoat6g6itt7tjmkc47mmssyzge2xif2iihc4.ipfs.cf-ipfs.com/ - https://bafybeihnn5l2otftw3dumfziisxkaxlk2cxpwgahpicwbqqn3jrywvsnzq.ipfs.cf-ipfs.com/
- [ipfs://QmUKDwf73MabW8XFc1EBM7rPqxs9p7sCAPaznFgrLpSJ6S/](ipfs://QmUKDwf73MabW8XFc1EBM7rPqxs9p7sCAPaznFgrLpSJ6S/) - [ipfs://QmeKVogatGvBPKPZDiUPj87zSqgPLHKmrEHX4DvHBAKus9/](ipfs://QmeKVogatGvBPKPZDiUPj87zSqgPLHKmrEHX4DvHBAKus9/)
## 5.62.0 (2024-12-11) ### 5.62.1 (2024-12-12)
### Features
* **web:** add modification check to on chain tx (#14083) 964cb1e
* **web:** add network cost to create flow (#14224) 9e280d9
* **web:** add platform id tracking (#13780) 186a9e0
* **web:** only show token warning on swap button click for prefilled (#14118) 068dd89
* **web:** price range input tick tooltips (#14129) 3c66f56
* **web:** show usd values in current tick tooltip for price range input (#14157) 7ecd409
* **web:** wiring up conversion proxy service (#13935) 6759787
### Bug Fixes ### Bug Fixes
* **web:** [3/n] remove react-spring (SwapLineItem) (#13914) 991557e * **web:** hides migrate when flag not on (#14496) 8f69fd0
* **web:** android keyboard issue (#14262) 1042833
* **web:** block lvmh nfts (#14233) dbbb92d
* **web:** cherrypick of price inversion issue (#14479) 75092f6
* **web:** delay main API call until approvals are calculated (#14302) af8185b
* **web:** downgrade react-native-web to 0.19.10 (#14474) 206c46f
* **web:** enforce privacy opt out choices (#14486) f8c43ad
* **web:** fix broken link for providing lps (#14372) (#14412) 71a95cc
* **web:** fix crash with v2 pair where there is a pool but no liquidity (#14186) cd0fd54
* **web:** fix max button functionality on deposit form (#14285) 1de6b4b
* **web:** hide un-owned positions (#14448) 280514a
* **web:** improve x-y positioning of liquidity chart and brush in range input (#14128) e50620d
* **web:** landing page modal diet - part ii (#14409) d1bd48c
* **web:** landing page modal diet (#14349) 6547912
* **web:** move input token warning to post-swap button (#14077) 823bef9
* **web:** op usdc sends (#14189) 24d41ea
* **web:** prevent crash when sending on bnb chain (#14359) 496ab28
* **web:** prevent flash of old swap flow (#14335) de64de2
* **web:** price range input grab (#14127) b1046cf
* **web:** remove nondefault list tokens from common bases (#14187) 2c9db40
* **web:** remove react-spring from NFT pages (#13923) 6045f3c
* **web:** rename swap settings context to tx settings context (#14276) 87fa4f6
* **web:** resizing resets flow (#14232) d442d98
* **web:** skip trading api calls when the form is not filled out (#14245) 389413d
* **web:** update support articles for v4 and lp redesign (#14248) a109d09
* **web:** update the claim flow to use the saga to deal with switching chains (#14346) 23246e9
* **web:** update the create flow to get data from the sdk instead of … (#14427) 94999a8
* **web:** v4 blocking fixes (#14178) 873bce1
* **web:** wrap positions in multichain context (#14467) 1d9f25d
* **web:** zora zk v2 lp fix staging (#14485) 4490890
### Continuous Integration
* **web:** update sitemaps b5a5370
web/5.62.0 web/5.62.1
\ No newline at end of file \ No newline at end of file
...@@ -15,7 +15,7 @@ import { PriceOrdering } from 'components/PositionListItem' ...@@ -15,7 +15,7 @@ import { PriceOrdering } from 'components/PositionListItem'
import { MouseoverTooltip } from 'components/Tooltip' import { MouseoverTooltip } from 'components/Tooltip'
import { getPoolDetailsURL } from 'graphql/data/util' import { getPoolDetailsURL } from 'graphql/data/util'
import { useSwitchChain } from 'hooks/useSwitchChain' import { useSwitchChain } from 'hooks/useSwitchChain'
import { useMemo, useState } from 'react' import { ReactNode, useMemo, useState } from 'react'
import { MoreHorizontal } from 'react-feather' import { MoreHorizontal } from 'react-feather'
import { useNavigate } from 'react-router-dom' import { useNavigate } from 'react-router-dom'
import { setOpenModal } from 'state/application/reducer' import { setOpenModal } from 'state/application/reducer'
...@@ -40,8 +40,11 @@ import { Plus } from 'ui/src/components/icons/Plus' ...@@ -40,8 +40,11 @@ import { Plus } from 'ui/src/components/icons/Plus'
import { RightArrow } from 'ui/src/components/icons/RightArrow' import { RightArrow } from 'ui/src/components/icons/RightArrow'
import { iconSizes } from 'ui/src/theme' import { iconSizes } from 'ui/src/theme'
import { ActionSheetDropdown } from 'uniswap/src/components/dropdowns/ActionSheetDropdown' import { ActionSheetDropdown } from 'uniswap/src/components/dropdowns/ActionSheetDropdown'
import { MenuItemProp } from 'uniswap/src/components/modals/ActionSheetModal'
import { getChainInfo } from 'uniswap/src/features/chains/chainInfo' import { getChainInfo } from 'uniswap/src/features/chains/chainInfo'
import { toGraphQLChain } from 'uniswap/src/features/chains/utils' import { toGraphQLChain } from 'uniswap/src/features/chains/utils'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
import { useLocalizationContext } from 'uniswap/src/features/language/LocalizationContext' import { useLocalizationContext } from 'uniswap/src/features/language/LocalizationContext'
import { ModalName } from 'uniswap/src/features/telemetry/constants' import { ModalName } from 'uniswap/src/features/telemetry/constants'
import { useUSDCValue } from 'uniswap/src/features/transactions/swap/hooks/useUSDCPrice' import { useUSDCValue } from 'uniswap/src/features/transactions/swap/hooks/useUSDCPrice'
...@@ -101,6 +104,7 @@ export function LiquidityPositionCard({ ...@@ -101,6 +104,7 @@ export function LiquidityPositionCard({
const { t } = useTranslation() const { t } = useTranslation()
const colors = useSporeColors() const colors = useSporeColors()
const isTouchDevice = useIsTouchDevice() const isTouchDevice = useIsTouchDevice()
const isV4Enabled = useFeatureFlag(FeatureFlags.V4Data)
const [pricesInverted, setPricesInverted] = useState(false) const [pricesInverted, setPricesInverted] = useState(false)
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
...@@ -140,14 +144,14 @@ export function LiquidityPositionCard({ ...@@ -140,14 +144,14 @@ export function LiquidityPositionCard({
onPress: () => { onPress: () => {
dispatch(setOpenModal({ name: ModalName.AddLiquidity, initialState: liquidityPosition })) dispatch(setOpenModal({ name: ModalName.AddLiquidity, initialState: liquidityPosition }))
}, },
render: () => <DropdownOptionRender Icon={Plus}>{t('common.addLiquidity')}</DropdownOptionRender>, render: (): ReactNode => <DropdownOptionRender Icon={Plus}>{t('common.addLiquidity')}</DropdownOptionRender>,
}, },
{ {
key: 'position-card-remove-liquidity', key: 'position-card-remove-liquidity',
onPress: () => { onPress: () => {
dispatch(setOpenModal({ name: ModalName.RemoveLiquidity, initialState: liquidityPosition })) dispatch(setOpenModal({ name: ModalName.RemoveLiquidity, initialState: liquidityPosition }))
}, },
render: () => <DropdownOptionRender Icon={Minus}>{t('pool.removeLiquidity')}</DropdownOptionRender>, render: (): ReactNode => <DropdownOptionRender Icon={Minus}>{t('pool.removeLiquidity')}</DropdownOptionRender>,
}, },
] ]
...@@ -161,7 +165,9 @@ export function LiquidityPositionCard({ ...@@ -161,7 +165,9 @@ export function LiquidityPositionCard({
} }
navigate(`/migrate/v2/${liquidityPosition.liquidityToken?.address ?? ''}`) navigate(`/migrate/v2/${liquidityPosition.liquidityToken?.address ?? ''}`)
}, },
render: () => <DropdownOptionRender Icon={RightArrow}>{t('pool.migrateLiquidity')}</DropdownOptionRender>, render: (): ReactNode => (
<DropdownOptionRender Icon={RightArrow}>{t('pool.migrateLiquidity')}</DropdownOptionRender>
),
} }
if (liquidityPosition.version === ProtocolVersion.V2) { if (liquidityPosition.version === ProtocolVersion.V2) {
...@@ -173,7 +179,9 @@ export function LiquidityPositionCard({ ...@@ -173,7 +179,9 @@ export function LiquidityPositionCard({
onPress: () => { onPress: () => {
navigate(`/migrate/v3/${chainInfo.urlParam}/${liquidityPosition.tokenId}`) navigate(`/migrate/v3/${chainInfo.urlParam}/${liquidityPosition.tokenId}`)
}, },
render: () => <DropdownOptionRender Icon={RightArrow}>{t('pool.migrateLiquidity')}</DropdownOptionRender>, render: (): ReactNode => (
<DropdownOptionRender Icon={RightArrow}>{t('pool.migrateLiquidity')}</DropdownOptionRender>
),
} }
return [ return [
...@@ -184,14 +192,14 @@ export function LiquidityPositionCard({ ...@@ -184,14 +192,14 @@ export function LiquidityPositionCard({
setOpenModal({ name: ModalName.ClaimFee, initialState: { ...liquidityPosition, collectAsWeth: false } }), setOpenModal({ name: ModalName.ClaimFee, initialState: { ...liquidityPosition, collectAsWeth: false } }),
) )
}, },
render: () => <DropdownOptionRender Icon={Dollar}>{t('pool.collectFees')}</DropdownOptionRender>, render: (): ReactNode => <DropdownOptionRender Icon={Dollar}>{t('pool.collectFees')}</DropdownOptionRender>,
}, },
...v2Options, ...v2Options,
migrateV3Option, isV4Enabled ? migrateV3Option : undefined,
{ {
key: 'position-card-separator', key: 'position-card-separator',
onPress: () => null, onPress: () => null,
render: () => <Separator />, render: (): ReactNode => <Separator />,
}, },
{ {
key: 'position-card-pool-info', key: 'position-card-pool-info',
...@@ -202,10 +210,10 @@ export function LiquidityPositionCard({ ...@@ -202,10 +210,10 @@ export function LiquidityPositionCard({
navigate(getPoolDetailsURL(liquidityPosition.poolId, toGraphQLChain(liquidityPosition.chainId))) navigate(getPoolDetailsURL(liquidityPosition.poolId, toGraphQLChain(liquidityPosition.chainId)))
}, },
render: () => <DropdownOptionRender Icon={InfoCircleFilled}>{t('pool.info')}</DropdownOptionRender>, render: (): ReactNode => <DropdownOptionRender Icon={InfoCircleFilled}>{t('pool.info')}</DropdownOptionRender>,
}, },
] ].filter((option): option is MenuItemProp => option !== undefined)
}, [liquidityPosition, dispatch, t, account.chainId, navigate, switchChain]) }, [liquidityPosition, isV4Enabled, dispatch, t, account.chainId, navigate, switchChain])
const priceOrderingForChart = useMemo(() => { const priceOrderingForChart = useMemo(() => {
if ( if (
......
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