ci(release): publish latest release

parent 755020c1
IPFS hash of the deployment:
- CIDv0: `QmVpD9pf9NG2wERetMBbCqV83YvdvgPsRRCTdxNSYewAJx`
- CIDv1: `bafybeidpcewjnfhxawg76jxxrlwqvxx4witgnsiz7jyq6ldroa7oirmygu`
- CIDv0: `QmVSCwN4FJ1Dz9ektaM2hE2SgFwxneE8qNDTsTiFQ9sWav`
- CIDv1: `bafybeidjnytuwuppye6qvlapvslldvomy3l6tfb54lqy7weebvcacwkgom`
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
......@@ -10,14 +10,14 @@ You can also access the Uniswap Interface from an IPFS gateway.
Your Uniswap settings are never remembered across different URLs.
IPFS gateways:
- https://bafybeidpcewjnfhxawg76jxxrlwqvxx4witgnsiz7jyq6ldroa7oirmygu.ipfs.dweb.link/
- [ipfs://QmVpD9pf9NG2wERetMBbCqV83YvdvgPsRRCTdxNSYewAJx/](ipfs://QmVpD9pf9NG2wERetMBbCqV83YvdvgPsRRCTdxNSYewAJx/)
- https://bafybeidjnytuwuppye6qvlapvslldvomy3l6tfb54lqy7weebvcacwkgom.ipfs.dweb.link/
- [ipfs://QmVSCwN4FJ1Dz9ektaM2hE2SgFwxneE8qNDTsTiFQ9sWav/](ipfs://QmVSCwN4FJ1Dz9ektaM2hE2SgFwxneE8qNDTsTiFQ9sWav/)
### 5.69.1 (2025-02-06)
### 5.69.2 (2025-02-07)
### Bug Fixes
* **web:** hide unichain explore behind feature flag (#16017) 55c5679
* **web:** block unichain leaks via url pathways (#16070) ab61225
web/5.69.1
\ No newline at end of file
web/5.69.2
\ No newline at end of file
......@@ -29,6 +29,7 @@ import { DeprecatedButton, Flex, Main, Switch, Text, styled } from 'ui/src'
import { InfoCircleFilled } from 'ui/src/components/icons/InfoCircleFilled'
import { useGetPositionQuery } from 'uniswap/src/data/rest/getPosition'
import { getChainInfo } from 'uniswap/src/features/chains/chainInfo'
import { useSupportedChainId } from 'uniswap/src/features/chains/hooks/useSupportedChainId'
import { UniverseChainId } from 'uniswap/src/features/chains/types'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag, useFeatureFlagWithLoading } from 'uniswap/src/features/gating/hooks'
......@@ -119,6 +120,7 @@ function PositionPage() {
const chainId = useChainIdFromUrlParam()
const chainInfo = chainId ? getChainInfo(chainId) : undefined
const account = useAccount()
const supportedAccountChainId = useSupportedChainId(account.chainId)
const { pathname } = useLocation()
const {
data,
......@@ -132,7 +134,7 @@ function PositionPage() {
? ProtocolVersion.V4
: ProtocolVersion.UNSPECIFIED,
tokenId: tokenIdFromUrl,
chainId: chainId ?? account.chainId,
chainId: chainId ?? supportedAccountChainId,
})
const position = data?.position
const positionInfo = useMemo(() => parseRestPosition(position), [position])
......
......@@ -23,6 +23,7 @@ import { usePendingLPTransactionsChangeListener } from 'state/transactions/hooks
import { usePairAdder } from 'state/user/hooks'
import { Circle, DeprecatedButton, Flex, Main, Shine, Text, styled } from 'ui/src'
import { useGetPositionQuery } from 'uniswap/src/data/rest/getPosition'
import { useSupportedChainId } from 'uniswap/src/features/chains/hooks/useSupportedChainId'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlagWithLoading } from 'uniswap/src/features/gating/hooks'
import { useLocalizationContext } from 'uniswap/src/features/language/LocalizationContext'
......@@ -79,6 +80,7 @@ function V2PositionPage() {
const { pairAddress } = useParams<{ pairAddress: string }>()
const chainId = useChainIdFromUrlParam()
const account = useAccount()
const supportedAccountChainId = useSupportedChainId(account.chainId)
const {
data,
......@@ -88,7 +90,7 @@ function V2PositionPage() {
owner: account?.address ?? ZERO_ADDRESS,
protocolVersion: ProtocolVersion.V2,
pairAddress,
chainId: chainId ?? account.chainId,
chainId: chainId ?? supportedAccountChainId,
})
const position = data?.position
const positionInfo = useMemo(() => parseRestPosition(position), [position])
......
......@@ -21,6 +21,7 @@ import { ThemeProvider } from 'theme'
import { nativeOnChain } from 'uniswap/src/constants/tokens'
import { useTokenWebQuery } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks'
import { getChainInfo } from 'uniswap/src/features/chains/chainInfo'
import { useIsSupportedChainId } from 'uniswap/src/features/chains/hooks/useSupportedChainId'
import { UniverseChainId } from 'uniswap/src/features/chains/types'
import { isAddress } from 'utilities/src/addresses'
import { useChainIdFromUrlParam } from 'utils/chainParams'
......@@ -159,6 +160,7 @@ export default function TokenDetailsPage() {
const pageChainId = account.chainId ?? UniverseChainId.Mainnet
const contextValue = useCreateTDPContext()
const { tokenColor, address, currency, currencyChain, currencyChainId, tokenQuery } = contextValue
const isSupportedChain = useIsSupportedChainId(currencyChainId)
const tokenQueryData = tokenQuery.data?.token
const metatagProperties = useMemo(() => {
......@@ -185,7 +187,7 @@ export default function TokenDetailsPage() {
))}
</Helmet>
{(() => {
if (currency) {
if (currency && isSupportedChain) {
return (
<TDPProvider contextValue={contextValue}>
<TokenDetails />
......
......@@ -454,13 +454,15 @@ export function useInitialCurrencyState(): {
defaultChainId,
])
const outputChainIsSupported = useSupportedChainId(parsedCurrencyState.outputChainId)
const initialOutputCurrencyAddress = useMemo(
() =>
// clear output if identical unless there's an outputChainId which means we're bridging
initialInputCurrencyAddress === parsedCurrencyState.outputCurrencyId && !parsedCurrencyState.outputChainId
// clear output if identical unless there's a supported outputChainId which means we're bridging
initialInputCurrencyAddress === parsedCurrencyState.outputCurrencyId && !outputChainIsSupported
? undefined
: parsedCurrencyState.outputCurrencyId,
[initialInputCurrencyAddress, parsedCurrencyState.outputCurrencyId, parsedCurrencyState.outputChainId],
[initialInputCurrencyAddress, parsedCurrencyState.outputCurrencyId, outputChainIsSupported],
)
const initialInputCurrency = useCurrency(initialInputCurrencyAddress, initialChainId)
......
......@@ -2,6 +2,7 @@ import { ParsedQs } from 'qs'
import { useParams } from 'react-router-dom'
// eslint-disable-next-line no-restricted-imports
import { UNIVERSE_CHAIN_INFO } from 'uniswap/src/features/chains/chainInfo'
import { useSupportedChainId } from 'uniswap/src/features/chains/hooks/useSupportedChainId'
import { UniverseChainId } from 'uniswap/src/features/chains/types'
import { CurrencyField } from 'uniswap/src/types/currency'
......@@ -29,7 +30,9 @@ export function useChainIdFromUrlParam(): UniverseChainId | undefined {
const chainName = useParams<{ chainName?: string }>().chainName
// In the case where /explore/:chainName is used, the chainName is passed as a tab param
const tab = useParams<{ tab?: string }>().tab
return getChainIdFromChainUrlParam(chainName ?? tab)
const chainId = getChainIdFromChainUrlParam(chainName ?? tab)
const supportedChainId = useSupportedChainId(chainId)
return supportedChainId
}
export function getParsedChainId(
......
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