ci(release): publish latest release

parent f9f5c087
IPFS hash of the deployment:
- CIDv0: `QmTNTfBMNoxKUXR71oFMrGiUQsDm3JtpkyVaxjCnRQuUbu`
- CIDv1: `bafybeickyem7qf4vd2ujvpahu2jeb2snj5sccgfnafuejd4ejpjuzrm7aq`
- CIDv0: `QmXzhJmLYm2o4XE8etZaPyjF8oeenpqB31D5WrfVc4Amcy`
- CIDv1: `bafybeieppayk37xqd2if3vmfoqy2t2ey4am4juzy4pgq4eudjyhmnswczy`
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
......@@ -10,16 +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://bafybeickyem7qf4vd2ujvpahu2jeb2snj5sccgfnafuejd4ejpjuzrm7aq.ipfs.dweb.link/
- https://bafybeickyem7qf4vd2ujvpahu2jeb2snj5sccgfnafuejd4ejpjuzrm7aq.ipfs.cf-ipfs.com/
- [ipfs://QmTNTfBMNoxKUXR71oFMrGiUQsDm3JtpkyVaxjCnRQuUbu/](ipfs://QmTNTfBMNoxKUXR71oFMrGiUQsDm3JtpkyVaxjCnRQuUbu/)
- https://bafybeieppayk37xqd2if3vmfoqy2t2ey4am4juzy4pgq4eudjyhmnswczy.ipfs.dweb.link/
- https://bafybeieppayk37xqd2if3vmfoqy2t2ey4am4juzy4pgq4eudjyhmnswczy.ipfs.cf-ipfs.com/
- [ipfs://QmXzhJmLYm2o4XE8etZaPyjF8oeenpqB31D5WrfVc4Amcy/](ipfs://QmXzhJmLYm2o4XE8etZaPyjF8oeenpqB31D5WrfVc4Amcy/)
### 5.19.1 (2024-03-20)
### 5.19.2 (2024-03-22)
### Bug Fixes
* **web:** dont crash PDP when one of the v2/v3 queries fails 10937ea
* **web:** dont crash PDP when one of the v2/v3 queries fails (#7011) ff38514
* **web:** clean feesEnabled feature flag from codebase (#6967) (#7054) f6d99da
web/5.19.1
\ No newline at end of file
web/5.19.2
\ No newline at end of file
import { CurrencyAmount } from '@uniswap/sdk-core'
import { FeatureFlag } from 'featureFlags'
import { USDC_MAINNET } from '../../../src/constants/tokens'
import { getBalance, getTestSelector } from '../../utils'
......@@ -7,7 +6,7 @@ import { getBalance, getTestSelector } from '../../utils'
describe('Swap with fees', () => {
describe('Classic swaps', () => {
beforeEach(() => {
cy.visit('/swap', { featureFlags: [{ name: FeatureFlag.feesEnabled, value: true }] })
cy.visit('/swap')
// Store trade quote into alias
cy.intercept({ url: 'https://interface.gateway.uniswap.org/v2/quote' }, (req) => {
......@@ -119,9 +118,7 @@ describe('Swap with fees', () => {
describe('UniswapX swaps', () => {
it('displays UniswapX fee in UI', () => {
cy.visit('/swap', {
featureFlags: [{ name: FeatureFlag.feesEnabled, value: true }],
})
cy.visit('/swap')
// Intercept the trade quote
cy.intercept({ url: 'https://interface.gateway.uniswap.org/v2/quote' }, (req) => {
......
......@@ -23,7 +23,6 @@ import { useSendEnabledFlag } from 'featureFlags/flags/send'
import { TraceJsonRpcVariant, useTraceJsonRpcFlag } from 'featureFlags/flags/traceJsonRpc'
import { useUniconV2Flag } from 'featureFlags/flags/uniconV2'
import { useUniswapXSyntheticQuoteFlag } from 'featureFlags/flags/uniswapXUseSyntheticQuote'
import { useFeesEnabledFlag } from 'featureFlags/flags/useFees'
import { useV2EverywhereFlag } from 'featureFlags/flags/v2Everywhere'
import { useUpdateAtom } from 'jotai/utils'
import { Children, PropsWithChildren, ReactElement, ReactNode, useCallback, useState } from 'react'
......@@ -299,12 +298,7 @@ export default function FeatureFlagModal() {
featureFlag={FeatureFlag.eip6963Enabled}
label="Enable EIP-6963: Multi Injected Provider Discovery"
/>
<FeatureFlagOption
variant={BaseVariant}
value={useFeesEnabledFlag()}
featureFlag={FeatureFlag.feesEnabled}
label="Enable Swap Fees"
/>
<FeatureFlagOption
variant={BaseVariant}
value={useLimitsEnabledFlag()}
......
......@@ -8,8 +8,6 @@ import { render, screen, within } from 'test-utils/render'
import { SwapDetails } from './SwapDetails'
jest.mock('../../featureFlags/flags/useFees', () => ({ useFeesEnabled: () => true }))
describe('SwapDetails.tsx', () => {
it('matches base snapshot, test trade exact input', () => {
const { asFragment } = render(
......
......@@ -11,8 +11,6 @@ import { act, render, screen } from 'test-utils/render'
import SwapDetailsDropdown from './SwapDetailsDropdown'
jest.mock('../../featureFlags/flags/useFees', () => ({ useFeesEnabled: () => true }))
describe('SwapDetailsDropdown.tsx', () => {
it('renders a trade', () => {
const { asFragment } = render(
......
......@@ -12,8 +12,6 @@ import {
} from 'test-utils/constants'
import { render, screen } from 'test-utils/render'
jest.mock('../../featureFlags/flags/useFees', () => ({ useFeesEnabled: () => true }))
// Forces tooltips to render in snapshots
jest.mock('react-dom', () => {
const original = jest.requireActual('react-dom')
......
......@@ -6,7 +6,6 @@ import RouterLabel from 'components/RouterLabel'
import Row from 'components/Row'
import { TooltipSize } from 'components/Tooltip'
import { SUPPORTED_GAS_ESTIMATE_CHAIN_IDS } from 'constants/chains'
import { useFeesEnabled } from 'featureFlags/flags/useFees'
import { useUSDPrice } from 'hooks/useUSDPrice'
import React, { useEffect, useState } from 'react'
import { animated, SpringValue } from 'react-spring'
......@@ -124,7 +123,6 @@ function useLineItem(props: SwapLineItemProps): LineItemData | undefined {
const { trade, syncing, allowedSlippage, type } = props
const { formatPercent } = useFormatter()
const isAutoSlippage = useUserSlippageTolerance()[0] === SlippageTolerance.Auto
const feesEnabled = useFeesEnabled()
const isUniswapX = isUniswapXTrade(trade)
const isPreview = isPreviewTrade(trade)
......@@ -173,7 +171,6 @@ function useLineItem(props: SwapLineItemProps): LineItemData | undefined {
),
}
case SwapLineItemType.SWAP_FEE: {
if (!feesEnabled) return
if (isPreview) return { Label: () => <Trans>Fee</Trans>, Value: () => <Loading /> }
return {
Label: () => (
......
import { BaseVariant, FeatureFlag, useBaseFlag } from '../index'
export function useFeesEnabledFlag(): BaseVariant {
return useBaseFlag(FeatureFlag.feesEnabled)
}
export function useFeesEnabled(): boolean {
return useFeesEnabledFlag() === BaseVariant.Enabled
}
......@@ -15,7 +15,6 @@ export enum FeatureFlag {
multichainUX = 'multichain_ux',
currencyConversion = 'currency_conversion',
quickRouteMainnet = 'enable_quick_route_mainnet',
feesEnabled = 'fees_enabled',
limitsEnabled = 'limits_enabled',
eip6963Enabled = 'eip6963_enabled',
gatewayDNSUpdate = 'gateway_dns_update',
......
......@@ -2,7 +2,6 @@ import { SkipToken, skipToken } from '@reduxjs/toolkit/query/react'
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import { useGatewayDNSUpdateEnabled } from 'featureFlags/flags/gatewayDNSUpdate'
import { useUniswapXSyntheticQuoteEnabled } from 'featureFlags/flags/uniswapXUseSyntheticQuote'
import { useFeesEnabled } from 'featureFlags/flags/useFees'
import { useMemo } from 'react'
import { GetQuoteArgs, INTERNAL_ROUTER_PREFERENCE_PRICE, RouterPreference } from 'state/routing/types'
import { currencyAddressForSwapQuote } from 'state/routing/utils'
......@@ -29,9 +28,8 @@ export function useRoutingAPIArguments({
}): GetQuoteArgs | SkipToken {
const uniswapXForceSyntheticQuotes = useUniswapXSyntheticQuoteEnabled()
const gatewayDNSUpdateEnabled = useGatewayDNSUpdateEnabled()
const feesEnabled = useFeesEnabled()
// Don't enable fee logic if this is a quote for pricing
const sendPortionEnabled = routerPreference === INTERNAL_ROUTER_PREFERENCE_PRICE ? false : feesEnabled
const sendPortionEnabled = routerPreference !== INTERNAL_ROUTER_PREFERENCE_PRICE
return useMemo(
() =>
......
......@@ -4,7 +4,6 @@ import { CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import { AVERAGE_L1_BLOCK_TIME } from 'constants/chainInfo'
import { USDC_MAINNET } from 'constants/tokens'
import { useUniswapXSyntheticQuoteEnabled } from 'featureFlags/flags/uniswapXUseSyntheticQuote'
import { useFeesEnabled } from 'featureFlags/flags/useFees'
import useIsWindowVisible from 'hooks/useIsWindowVisible'
import ms from 'ms'
import { GetQuoteArgs, INTERNAL_ROUTER_PREFERENCE_PRICE, RouterPreference } from 'state/routing/types'
......@@ -28,13 +27,11 @@ jest.mock('./slice', () => {
})
jest.mock('state/user/hooks')
jest.mock('featureFlags/flags/uniswapXUseSyntheticQuote')
jest.mock('featureFlags/flags/useFees')
beforeEach(() => {
mocked(useIsWindowVisible).mockReturnValue(true)
mocked(useRouterPreference).mockReturnValue([RouterPreference.API, () => undefined])
mocked(useUniswapXSyntheticQuoteEnabled).mockReturnValue(false)
mocked(useFeesEnabled).mockReturnValue(true)
// @ts-ignore we dont use the response from this hook in useRoutingAPITrade so fine to mock as undefined
mocked(useGetQuoteQuery).mockReturnValue(undefined)
mocked(useGetQuoteQueryState).mockReturnValue({
......
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