ci(release): publish latest release

parent 63abe139
IPFS hash of the deployment:
- CIDv0: `QmSmvQMNhi4BXMeBcTtjzRqkSkUM6BrLUjoiF4iqydKdxD`
- CIDv1: `bafybeicb5abvqxhmsyufrrsh67h2q6cdomr673nes6umxcq2uvnmcnglei`
- CIDv0: `QmcrR5faskhjW7PVj7g5tA4gAqASyDvySRHAQes9fVCSvJ`
- CIDv1: `bafybeigxuoq3myrrht67aku2bu7jqvr6rdfwfp6bycbgu7tbybbktumvz4`
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
......@@ -10,15 +10,15 @@ You can also access the Uniswap Interface from an IPFS gateway.
Your Uniswap settings are never remembered across different URLs.
IPFS gateways:
- https://bafybeicb5abvqxhmsyufrrsh67h2q6cdomr673nes6umxcq2uvnmcnglei.ipfs.dweb.link/
- https://bafybeicb5abvqxhmsyufrrsh67h2q6cdomr673nes6umxcq2uvnmcnglei.ipfs.cf-ipfs.com/
- [ipfs://QmSmvQMNhi4BXMeBcTtjzRqkSkUM6BrLUjoiF4iqydKdxD/](ipfs://QmSmvQMNhi4BXMeBcTtjzRqkSkUM6BrLUjoiF4iqydKdxD/)
- https://bafybeigxuoq3myrrht67aku2bu7jqvr6rdfwfp6bycbgu7tbybbktumvz4.ipfs.dweb.link/
- https://bafybeigxuoq3myrrht67aku2bu7jqvr6rdfwfp6bycbgu7tbybbktumvz4.ipfs.cf-ipfs.com/
- [ipfs://QmcrR5faskhjW7PVj7g5tA4gAqASyDvySRHAQes9fVCSvJ/](ipfs://QmcrR5faskhjW7PVj7g5tA4gAqASyDvySRHAQes9fVCSvJ/)
### 5.67.2 (2025-01-23)
### 5.67.3 (2025-01-23)
### Bug Fixes
* **web:** send updated user property chainId (#15417) 731a83d
* **web:** lp flow error logging updates (#15424) d7de5d5
web/5.67.2
\ No newline at end of file
web/5.67.3
\ No newline at end of file
......@@ -3,7 +3,7 @@ import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb'
import { Currency, CurrencyAmount } from '@uniswap/sdk-core'
import { useIncreaseLiquidityContext } from 'components/IncreaseLiquidity/IncreaseLiquidityContext'
import { useModalLiquidityInitialState } from 'components/Liquidity/hooks'
import { getProtocolItems } from 'components/Liquidity/utils'
import { getProtocolItems, parseErrorMessageTitle } from 'components/Liquidity/utils'
import { ZERO_ADDRESS } from 'constants/misc'
import { getCurrencyAddressForTradingApi } from 'pages/Pool/Positions/create/utils'
import { PropsWithChildren, createContext, useContext, useMemo } from 'react'
......@@ -69,18 +69,18 @@ export function IncreaseLiquidityTxContextProvider({ children }: PropsWithChildr
} = useCheckLpApprovalQuery({
params: increaseLiquidityApprovalParams,
staleTime: 5 * ONE_SECOND_MS,
enabled: !error,
enabled: !!increaseLiquidityApprovalParams && !error,
})
if (approvalError) {
logger.info(
'IncreaseLiquidityTxContext',
'IncreaseLiquidityTxContext',
'CheckLpApprovalQuery',
JSON.stringify({
error: approvalError,
increaseLiquidityApprovalParams,
}),
parseErrorMessageTitle(approvalError, 'unknown CheckLpApprovalQuery'),
{
error: JSON.stringify(approvalError),
increaseLiquidityApprovalParams: JSON.stringify(increaseLiquidityApprovalParams),
},
)
}
......@@ -168,10 +168,15 @@ export function IncreaseLiquidityTxContextProvider({ children }: PropsWithChildr
const { increase, gasFee: actualGasFee, dependentAmount } = increaseCalldata || {}
if (calldataError) {
logger.warn('IncreaseLiquidityTxContext', 'IncreaseLiquidityTxContext', 'IncreaseLpPositionCalldataQuery', {
error: JSON.stringify(calldataError),
increaseCalldataQueryParams: JSON.stringify(increaseCalldataQueryParams),
})
logger.info(
'IncreaseLiquidityTxContext',
'IncreaseLiquidityTxContext',
parseErrorMessageTitle(calldataError, 'unknown IncreaseLpPositionCalldataQuery'),
{
error: JSON.stringify(calldataError),
increaseCalldataQueryParams: JSON.stringify(increaseCalldataQueryParams),
},
)
}
const { value: calculatedGasFee } = useTransactionGasFee(increase, !!actualGasFee)
......
......@@ -656,3 +656,12 @@ export function getDisplayedAmountsFromDependentAmount({
displayCurrencyAmounts: currencyAmounts,
}
}
export function parseErrorMessageTitle(error: unknown, defaultTitle: string) {
if (!error) {
return defaultTitle
}
const errorWithData = error as { data?: { detail?: string }; name?: string }
return errorWithData.data?.detail || errorWithData.name || defaultTitle
}
// eslint-disable-next-line no-restricted-imports
import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb'
import { useV3OrV4PositionDerivedInfo } from 'components/Liquidity/hooks'
import { getProtocolItems } from 'components/Liquidity/utils'
import { getProtocolItems, parseErrorMessageTitle } from 'components/Liquidity/utils'
import { useRemoveLiquidityModalContext } from 'components/RemoveLiquidity/RemoveLiquidityModalContext'
import { RemoveLiquidityTxInfo } from 'components/RemoveLiquidity/RemoveLiquidityTxContext'
import { ZERO_ADDRESS } from 'constants/misc'
......@@ -56,17 +56,18 @@ export function useRemoveLiquidityTxAndGasInfo({ account }: { account?: string }
} = useCheckLpApprovalQuery({
params: v2LpTokenApprovalQueryParams,
staleTime: 5 * ONE_SECOND_MS,
enabled: Boolean(v2LpTokenApprovalQueryParams),
})
if (approvalError) {
logger.info(
'RemoveLiquidityTxAndGasInfo',
'RemoveLiquidityTxAndGasInfo',
'CheckLpApprovalQuery',
JSON.stringify({
error: approvalError,
v2LpTokenApprovalQueryParams,
}),
parseErrorMessageTitle(approvalError, 'unkown CheckLpApprovalQuery'),
{
error: JSON.stringify(approvalError),
v2LpTokenApprovalQueryParams: JSON.stringify(v2LpTokenApprovalQueryParams),
},
)
}
......@@ -141,19 +142,20 @@ export function useRemoveLiquidityTxAndGasInfo({ account }: { account?: string }
deadlineInMinutes: customDeadline,
refetchInterval: 5 * ONE_SECOND_MS,
enabled:
(!percentInvalid && !v2LpTokenApprovalQueryParams) ||
(!v2ApprovalLoading && !approvalError && Boolean(v2LpTokenApproval)),
!!decreaseCalldataQueryParams &&
((!percentInvalid && !v2LpTokenApprovalQueryParams) ||
(!v2ApprovalLoading && !approvalError && Boolean(v2LpTokenApproval))),
})
if (calldataError) {
logger.info(
'RemoveLiquidityTxAndGasInfo',
'RemoveLiquidityTxAndGasInfo',
'DecreaseLpPositionCalldataQuery',
JSON.stringify({
error: calldataError,
decreaseCalldataQueryParams,
}),
parseErrorMessageTitle(calldataError, 'DecreaseLpPositionCalldataQuery'),
{
error: JSON.stringify(calldataError),
decreaseCalldataQueryParams: JSON.stringify(decreaseCalldataQueryParams),
},
)
}
......
......@@ -3,6 +3,7 @@ import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb'
import { Currency, CurrencyAmount } from '@uniswap/sdk-core'
import { useV3OrV4PositionDerivedInfo } from 'components/Liquidity/hooks'
import { V3PositionInfo } from 'components/Liquidity/types'
import { parseErrorMessageTitle } from 'components/Liquidity/utils'
import { ZERO_ADDRESS } from 'constants/misc'
import { useCreatePositionContext, usePriceRangeContext } from 'pages/Pool/Positions/create/CreatePositionContext'
import { PropsWithChildren, createContext, useContext, useMemo } from 'react'
......@@ -75,17 +76,18 @@ export function MigrateV3PositionTxContextProvider({
'x-universal-router-version': '2.0',
},
staleTime: 5 * ONE_SECOND_MS,
enabled: Boolean(increaseLiquidityApprovalParams),
})
if (approvalError) {
logger.info(
'MigrateV3LiquidityTxContext',
'MigrateV3LiquidityTxContext',
'CheckLpApprovalQuery',
JSON.stringify({
error: approvalError,
increaseLiquidityApprovalParams,
}),
parseErrorMessageTitle(approvalError, 'unknown CheckLpApprovalQuery'),
{
error: JSON.stringify(approvalError),
increaseLiquidityApprovalParams: JSON.stringify(increaseLiquidityApprovalParams),
},
)
}
......@@ -189,11 +191,11 @@ export function MigrateV3PositionTxContextProvider({
logger.info(
'MigrateV3LiquidityTxContext',
'MigrateV3LiquidityTxContext',
'MigrateLpPositionCalldataQuery',
JSON.stringify({
error: migrateError,
parseErrorMessageTitle(migrateError, 'unknown MigrateLpPositionCalldataQuery'),
{
error: JSON.stringify(migrateError),
migrateCalldataQueryParams: JSON.stringify(migratePositionRequestArgs),
}),
},
)
}
......
......@@ -3,7 +3,7 @@ import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb'
import { LoaderButton } from 'components/Button/LoaderButton'
import { getLPBaseAnalyticsProperties } from 'components/Liquidity/analytics'
import { useModalLiquidityInitialState, useV3OrV4PositionDerivedInfo } from 'components/Liquidity/hooks'
import { getProtocolItems } from 'components/Liquidity/utils'
import { getProtocolItems, parseErrorMessageTitle } from 'components/Liquidity/utils'
import { GetHelpHeader } from 'components/Modal/GetHelpHeader'
import { ZERO_ADDRESS } from 'constants/misc'
import { useAccount } from 'hooks/useAccount'
......@@ -112,18 +112,15 @@ export function ClaimFeeModal() {
refetch,
} = useClaimLpFeesCalldataQuery({
params: claimLpFeesParams,
enabled: Boolean(claimLpFeesParams),
})
if (error) {
logger.info(
'ClaimFeeModal',
'ClaimFeeModal',
'ClaimLPFeesCalldataQuery',
JSON.stringify({
error,
claimLpFeesParams,
}),
)
// prevent logging of the empty error object for now since those are burying signals
if (error && Object.keys(error).length > 0) {
logger.info('ClaimFeeModal', 'ClaimFeeModal', parseErrorMessageTitle(error, 'unknown ClaimLPFeesCalldataQuery'), {
error: JSON.stringify(error),
claimLpFeesParams: JSON.stringify(claimLpFeesParams),
})
}
const txInfo = useMemo(() => {
......
import { FeeTierSearchModal } from 'components/Liquidity/FeeTierSearchModal'
import { DepositState } from 'components/Liquidity/types'
import { parseErrorMessageTitle } from 'components/Liquidity/utils'
import {
CreatePositionContext,
CreateTxContext,
......@@ -168,18 +169,18 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod
} = useCheckLpApprovalQuery({
params: addLiquidityApprovalParams,
staleTime: 5 * ONE_SECOND_MS,
enabled: !hasError,
enabled: !!addLiquidityApprovalParams && !hasError,
})
if (approvalError) {
logger.info(
'CreateTxContextProvider',
'CreateTxContextProvider',
'CheckLpApprovalQuery',
JSON.stringify({
error: approvalError,
addLiquidityApprovalParams,
}),
parseErrorMessageTitle(approvalError, 'unknown CheckLpApprovalQuery'),
{
error: JSON.stringify(approvalError),
addLiquidityApprovalParams: JSON.stringify(addLiquidityApprovalParams),
},
)
}
......@@ -221,18 +222,23 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod
params: createCalldataQueryParams,
deadlineInMinutes: swapSettings.customDeadline,
refetchInterval: 5 * ONE_SECOND_MS,
enabled: !hasError && !approvalLoading && !approvalError && Boolean(approvalCalldata),
enabled:
!hasError &&
!approvalLoading &&
!approvalError &&
Boolean(approvalCalldata) &&
Boolean(createCalldataQueryParams),
})
if (createError) {
logger.info(
'CreateTxContextProvider',
'CreateTxContextProvider',
'CreateLpPositionCalldataQuery',
JSON.stringify({
error: createError,
createCalldataQueryParams,
}),
parseErrorMessageTitle(createError, 'unknown CreateLpPositionCalldataQuery'),
{
error: JSON.stringify(createError),
createCalldataQueryParams: JSON.stringify(createCalldataQueryParams),
},
)
}
......
......@@ -15,10 +15,9 @@ export function useCheckLpApprovalQuery({
return useQuery<CheckApprovalLPResponse>({
queryKey,
enabled: !!params,
queryFn: async () => {
if (!params) {
throw new Error('Params are required')
throw { name: 'Params are required' }
}
return await checkLpApproval(params, headers)
},
......
......@@ -12,10 +12,9 @@ export function useClaimLpFeesCalldataQuery({
return useQuery<ClaimLPFeesResponse>({
queryKey,
enabled: !!params,
queryFn: async () => {
if (!params) {
throw new Error('Params are required')
throw { name: 'Params are required' }
}
return await claimLpFees(params)
},
......
......@@ -18,10 +18,9 @@ export function useCreateLpPositionCalldataQuery({
return useQuery<CreateLPPositionResponse>({
queryKey,
enabled: !!params,
queryFn: async () => {
if (!params) {
throw new Error('Params are required')
throw { name: 'Params are required' }
}
return await createLpPosition(paramsWithDeadline)
},
......
......@@ -19,10 +19,9 @@ export function useDecreaseLpPositionCalldataQuery({
return useQuery<DecreaseLPPositionResponse>({
queryKey,
enabled: !!params,
queryFn: async () => {
if (!params) {
throw new Error('Params are required')
throw { name: 'Params are required' }
}
return await decreaseLpPosition(paramsWithDeadline)
},
......
......@@ -19,10 +19,9 @@ export function useIncreaseLpPositionCalldataQuery({
const paramsWithDeadline = { ...params, deadline }
return useQuery<IncreaseLPPositionResponse>({
queryKey,
enabled: !!params,
queryFn: async () => {
if (!params) {
throw new Error('Params are required')
throw { name: 'Params are required' }
}
return await increaseLpPosition(paramsWithDeadline)
},
......
......@@ -15,10 +15,9 @@ export function useMigrateV3LpPositionCalldataQuery({
return useQuery<MigrateLPPositionResponse>({
queryKey,
enabled: !!params,
queryFn: async () => {
if (!params) {
throw new Error('Params are required')
throw { name: 'Params are required' }
}
return await migrateLpPosition(params)
},
......
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