Commit 5307d113 authored by cartcrom's avatar cartcrom Committed by GitHub

feat: eth output feature flag for uniswapx orders (#7078)

parent 9e7d59f1
...@@ -5,6 +5,7 @@ import { DetailsV2Variant, useDetailsV2Flag } from 'featureFlags/flags/nftDetail ...@@ -5,6 +5,7 @@ import { DetailsV2Variant, useDetailsV2Flag } from 'featureFlags/flags/nftDetail
import { useRoutingAPIForPriceFlag } from 'featureFlags/flags/priceRoutingApi' import { useRoutingAPIForPriceFlag } from 'featureFlags/flags/priceRoutingApi'
import { TraceJsonRpcVariant, useTraceJsonRpcFlag } from 'featureFlags/flags/traceJsonRpc' import { TraceJsonRpcVariant, useTraceJsonRpcFlag } from 'featureFlags/flags/traceJsonRpc'
import { UniswapXVariant, useUniswapXFlag } from 'featureFlags/flags/uniswapx' import { UniswapXVariant, useUniswapXFlag } from 'featureFlags/flags/uniswapx'
import { useUniswapXEthOutputFlag } from 'featureFlags/flags/uniswapXEthOutput'
import { useUniswapXSyntheticQuoteFlag } from 'featureFlags/flags/uniswapXUseSyntheticQuote' import { useUniswapXSyntheticQuoteFlag } from 'featureFlags/flags/uniswapXUseSyntheticQuote'
import { useUpdateAtom } from 'jotai/utils' import { useUpdateAtom } from 'jotai/utils'
import { Children, PropsWithChildren, ReactElement, ReactNode, useCallback, useState } from 'react' import { Children, PropsWithChildren, ReactElement, ReactNode, useCallback, useState } from 'react'
...@@ -230,6 +231,12 @@ export default function FeatureFlagModal() { ...@@ -230,6 +231,12 @@ export default function FeatureFlagModal() {
featureFlag={FeatureFlag.uniswapXSyntheticQuote} featureFlag={FeatureFlag.uniswapXSyntheticQuote}
label="Force synthetic quotes for UniswapX" label="Force synthetic quotes for UniswapX"
/> />
<FeatureFlagOption
variant={BaseVariant}
value={useUniswapXEthOutputFlag()}
featureFlag={FeatureFlag.uniswapXEthOutputEnabled}
label="Enable eth output for UniswapX orders"
/>
<FeatureFlagOption <FeatureFlagOption
variant={BaseVariant} variant={BaseVariant}
value={useRoutingAPIForPriceFlag()} value={useRoutingAPIForPriceFlag()}
......
import { BaseVariant, FeatureFlag, useBaseFlag } from '../index'
export function useUniswapXEthOutputFlag(): BaseVariant {
return useBaseFlag(FeatureFlag.uniswapXEthOutputEnabled)
}
export function useUniswapXEthOutputEnabled(): boolean {
return useUniswapXEthOutputFlag() === BaseVariant.Enabled
}
...@@ -15,6 +15,7 @@ export enum FeatureFlag { ...@@ -15,6 +15,7 @@ export enum FeatureFlag {
uniswapXSyntheticQuote = 'uniswapx_synthetic_quote', uniswapXSyntheticQuote = 'uniswapx_synthetic_quote',
routingAPIPrice = 'routing_api_price', routingAPIPrice = 'routing_api_price',
forceUniswapXOn = 'uniswapx_force_on', // forces routing-api's feature flag for uniswapx to turn on as well forceUniswapXOn = 'uniswapx_force_on', // forces routing-api's feature flag for uniswapx to turn on as well
uniswapXEthOutputEnabled = 'uniswapx_eth_output_enabled',
baseEnabled = 'base_enabled', baseEnabled = 'base_enabled',
} }
......
...@@ -2,6 +2,7 @@ import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core' ...@@ -2,6 +2,7 @@ import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import { useForceUniswapXOn } from 'featureFlags/flags/forceUniswapXOn' import { useForceUniswapXOn } from 'featureFlags/flags/forceUniswapXOn'
import { useRoutingAPIForPrice } from 'featureFlags/flags/priceRoutingApi' import { useRoutingAPIForPrice } from 'featureFlags/flags/priceRoutingApi'
import { useUniswapXEnabled } from 'featureFlags/flags/uniswapx' import { useUniswapXEnabled } from 'featureFlags/flags/uniswapx'
import { useUniswapXEthOutputEnabled } from 'featureFlags/flags/uniswapXEthOutput'
import { useUniswapXSyntheticQuoteEnabled } from 'featureFlags/flags/uniswapXUseSyntheticQuote' import { useUniswapXSyntheticQuoteEnabled } from 'featureFlags/flags/uniswapXUseSyntheticQuote'
import { useMemo } from 'react' import { useMemo } from 'react'
import { GetQuoteArgs, INTERNAL_ROUTER_PREFERENCE_PRICE } from 'state/routing/slice' import { GetQuoteArgs, INTERNAL_ROUTER_PREFERENCE_PRICE } from 'state/routing/slice'
...@@ -34,6 +35,7 @@ export function useRoutingAPIArguments({ ...@@ -34,6 +35,7 @@ export function useRoutingAPIArguments({
const forceUniswapXOn = useForceUniswapXOn() const forceUniswapXOn = useForceUniswapXOn()
const userDisabledUniswapX = useUserDisabledUniswapX() const userDisabledUniswapX = useUserDisabledUniswapX()
const isRoutingAPIPrice = useRoutingAPIForPrice() const isRoutingAPIPrice = useRoutingAPIForPrice()
const uniswapXEthOutputEnabled = useUniswapXEthOutputEnabled()
return useMemo( return useMemo(
() => () =>
...@@ -58,6 +60,7 @@ export function useRoutingAPIArguments({ ...@@ -58,6 +60,7 @@ export function useRoutingAPIArguments({
uniswapXForceSyntheticQuotes, uniswapXForceSyntheticQuotes,
forceUniswapXOn, forceUniswapXOn,
userDisabledUniswapX, userDisabledUniswapX,
uniswapXEthOutputEnabled,
}, },
[ [
account, account,
...@@ -71,6 +74,7 @@ export function useRoutingAPIArguments({ ...@@ -71,6 +74,7 @@ export function useRoutingAPIArguments({
uniswapXForceSyntheticQuotes, uniswapXForceSyntheticQuotes,
forceUniswapXOn, forceUniswapXOn,
userDisabledUniswapX, userDisabledUniswapX,
uniswapXEthOutputEnabled,
] ]
) )
} }
...@@ -50,6 +50,7 @@ export interface GetQuoteArgs { ...@@ -50,6 +50,7 @@ export interface GetQuoteArgs {
forceUniswapXOn: boolean forceUniswapXOn: boolean
userDisabledUniswapX: boolean userDisabledUniswapX: boolean
isRoutingAPIPrice?: boolean isRoutingAPIPrice?: boolean
uniswapXEthOutputEnabled: boolean
} }
const protocols: Protocol[] = [Protocol.V2, Protocol.V3, Protocol.MIXED] const protocols: Protocol[] = [Protocol.V2, Protocol.V3, Protocol.MIXED]
...@@ -60,7 +61,15 @@ const DEFAULT_QUERY_PARAMS = { ...@@ -60,7 +61,15 @@ const DEFAULT_QUERY_PARAMS = {
} }
function getRoutingAPIConfig(args: GetQuoteArgs): RoutingConfig { function getRoutingAPIConfig(args: GetQuoteArgs): RoutingConfig {
const { account, tradeType, tokenOutAddress, tokenInChainId, uniswapXForceSyntheticQuotes, routerPreference } = args const {
account,
tradeType,
tokenOutAddress,
tokenInChainId,
uniswapXForceSyntheticQuotes,
uniswapXEthOutputEnabled,
routerPreference,
} = args
const uniswapx = { const uniswapx = {
useSyntheticQuotes: uniswapXForceSyntheticQuotes, useSyntheticQuotes: uniswapXForceSyntheticQuotes,
...@@ -83,7 +92,7 @@ function getRoutingAPIConfig(args: GetQuoteArgs): RoutingConfig { ...@@ -83,7 +92,7 @@ function getRoutingAPIConfig(args: GetQuoteArgs): RoutingConfig {
if ( if (
!args.uniswapXEnabled || !args.uniswapXEnabled ||
(args.userDisabledUniswapX && routerPreference !== RouterPreference.X) || (args.userDisabledUniswapX && routerPreference !== RouterPreference.X) ||
tokenOutIsNative || (tokenOutIsNative && !uniswapXEthOutputEnabled) ||
tradeType === TradeType.EXACT_OUTPUT || tradeType === TradeType.EXACT_OUTPUT ||
!isUniswapXSupportedChain(tokenInChainId) !isUniswapXSupportedChain(tokenInChainId)
) { ) {
......
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