ci(release): publish latest release

parent 5064ba2f
IPFS hash of the deployment: IPFS hash of the deployment:
- CIDv0: `QmSR5NDYo4zoKKUQJ6fbr7QBw8VzMSYTPLCKWFrnEy3siH` - CIDv0: `QmNZFM3Tfk8WQxYkSq5Wst6ZEcZMGWi3JWdjEmzzLL6CgQ`
- CIDv1: `bafybeib4sdzwnyzjkgip3tbxxpwp76goocrdu77z5cnshiitjqcpnv2pci` - CIDv1: `bafybeiadhirdveghtb4gap6kftmp7vfaa67op3ojcarjxf5f3pt2oqface`
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,14 +10,14 @@ You can also access the Uniswap Interface from an IPFS gateway. ...@@ -10,14 +10,14 @@ 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://bafybeib4sdzwnyzjkgip3tbxxpwp76goocrdu77z5cnshiitjqcpnv2pci.ipfs.dweb.link/ - https://bafybeiadhirdveghtb4gap6kftmp7vfaa67op3ojcarjxf5f3pt2oqface.ipfs.dweb.link/
- [ipfs://QmSR5NDYo4zoKKUQJ6fbr7QBw8VzMSYTPLCKWFrnEy3siH/](ipfs://QmSR5NDYo4zoKKUQJ6fbr7QBw8VzMSYTPLCKWFrnEy3siH/) - [ipfs://QmNZFM3Tfk8WQxYkSq5Wst6ZEcZMGWi3JWdjEmzzLL6CgQ/](ipfs://QmNZFM3Tfk8WQxYkSq5Wst6ZEcZMGWi3JWdjEmzzLL6CgQ/)
### 5.80.3 (2025-04-25) ### 5.80.4 (2025-04-25)
### Bug Fixes ### Bug Fixes
* **web:** prod hotfix v4 eth pair liq chart fix (#18899) bab7ea8 * **web:** lp incentives bugfixes (#18833) d337c45
web/5.80.3 web/5.80.4
\ No newline at end of file \ No newline at end of file
...@@ -60,8 +60,10 @@ export function LpIncentiveClaimModal({ ...@@ -60,8 +60,10 @@ export function LpIncentiveClaimModal({
}, },
}) })
const handleClaim = useEvent(() => { const handleClaim = useEvent(({ skipAnalytics = false } = {}) => {
if (!skipAnalytics) {
sendAnalyticsEvent(UniswapEventName.LpIncentiveCollectRewardsRetry) sendAnalyticsEvent(UniswapEventName.LpIncentiveCollectRewardsRetry)
}
setError(null) setError(null)
claim() claim()
}) })
...@@ -69,14 +71,14 @@ export function LpIncentiveClaimModal({ ...@@ -69,14 +71,14 @@ export function LpIncentiveClaimModal({
// Only auto-claim when the modal opens and there's no pending transaction // Only auto-claim when the modal opens and there's no pending transaction
useEffect(() => { useEffect(() => {
if (isOpen && !isPendingTransaction) { if (isOpen && !isPendingTransaction) {
handleClaim() handleClaim({ skipAnalytics: true })
} }
}, [isOpen, isPendingTransaction, handleClaim]) }, [isOpen, isPendingTransaction, handleClaim])
const buttonConfig = useLpIncentiveClaimButtonConfig({ const buttonConfig = useLpIncentiveClaimButtonConfig({
isLoading: isPending, isLoading: isPending,
isPendingTransaction, isPendingTransaction,
onClaim: handleClaim, onClaim: () => handleClaim(), // Don't skip analytics for manual claim
}) })
return ( return (
......
...@@ -32,20 +32,19 @@ export function useLpIncentives(): UseLpIncentivesResult { ...@@ -32,20 +32,19 @@ export function useLpIncentives(): UseLpIncentivesResult {
const account = useAccount() const account = useAccount()
const [, setLastClaimed] = useAtom(lpIncentivesLastClaimedAtom) const [, setLastClaimed] = useAtom(lpIncentivesLastClaimedAtom)
// Refetch rewards on transaction success with "reload" true to bust the Merkl cache for users wallet address
const { refetch } = useGetPoolsRewards( const { refetch } = useGetPoolsRewards(
{ walletAddress: account?.address, chainIds: [UniverseChainId.Mainnet], reload: true }, { walletAddress: account?.address, chainIds: [UniverseChainId.Mainnet], reload: true },
Boolean(account?.address), false,
) )
const onTransactionSuccess = useCallback(async () => { const onTransactionSuccess = useCallback(async () => {
// Immediately mark as collected locally and close modal
setIsModalOpen(false) setIsModalOpen(false)
setHasCollectedRewards(true) setHasCollectedRewards(true)
// Reload rewards data from the API // Reload rewards data from the API
if (account?.address) { if (account?.address) {
try { try {
// Refetch and wait for the result
const { data: rewardsData } = await refetch() const { data: rewardsData } = await refetch()
// If the refetched data still shows rewards, store it temporarily // If the refetched data still shows rewards, store it temporarily
......
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