Commit dac334f9 authored by Charles Bachmeier's avatar Charles Bachmeier Committed by GitHub

feat: add info site migration feature flags (#7228)

* feat: add info site migration feature flags

* feat: feature flag modal improvements

* scrollbar padding

* button padding
parent 5478cb0c
import Column from 'components/Column'
import { BaseVariant, FeatureFlag, featureFlagSettings, useUpdateFlag } from 'featureFlags' import { BaseVariant, FeatureFlag, featureFlagSettings, useUpdateFlag } from 'featureFlags'
import { useCurrencyConversionFlag } from 'featureFlags/flags/currencyConversion' import { useCurrencyConversionFlag } from 'featureFlags/flags/currencyConversion'
import { useForceUniswapXOnFlag } from 'featureFlags/flags/forceUniswapXOn' import { useForceUniswapXOnFlag } from 'featureFlags/flags/forceUniswapXOn'
import { useFotAdjustmentsFlag } from 'featureFlags/flags/fotAdjustments' import { useFotAdjustmentsFlag } from 'featureFlags/flags/fotAdjustments'
import { useInfoExploreFlag } from 'featureFlags/flags/infoExplore'
import { useInfoLiveViewsFlag } from 'featureFlags/flags/infoLiveViews'
import { useInfoPoolPageFlag } from 'featureFlags/flags/infoPoolPage'
import { useInfoTDPFlag } from 'featureFlags/flags/infoTDP'
import { useMultichainUXFlag } from 'featureFlags/flags/multichainUx' import { useMultichainUXFlag } from 'featureFlags/flags/multichainUx'
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'
...@@ -14,6 +19,7 @@ import { X } from 'react-feather' ...@@ -14,6 +19,7 @@ import { X } from 'react-feather'
import { useModalIsOpen, useToggleFeatureFlags } from 'state/application/hooks' import { useModalIsOpen, useToggleFeatureFlags } from 'state/application/hooks'
import { ApplicationModal } from 'state/application/reducer' import { ApplicationModal } from 'state/application/reducer'
import styled from 'styled-components' import styled from 'styled-components'
import { BREAKPOINTS } from 'theme'
const StyledModal = styled.div` const StyledModal = styled.div`
position: fixed; position: fixed;
...@@ -25,7 +31,7 @@ const StyledModal = styled.div` ...@@ -25,7 +31,7 @@ const StyledModal = styled.div`
height: fit-content; height: fit-content;
color: ${({ theme }) => theme.neutral1}; color: ${({ theme }) => theme.neutral1};
font-size: 18px; font-size: 18px;
padding: 20px; padding: 20px 0px;
background-color: ${({ theme }) => theme.surface2}; background-color: ${({ theme }) => theme.surface2};
border-radius: 12px; border-radius: 12px;
border: 1px solid ${({ theme }) => theme.surface3}; border: 1px solid ${({ theme }) => theme.surface3};
...@@ -33,12 +39,26 @@ const StyledModal = styled.div` ...@@ -33,12 +39,26 @@ const StyledModal = styled.div`
flex-direction: column; flex-direction: column;
gap: 8px; gap: 8px;
border: 1px solid ${({ theme }) => theme.surface3}; border: 1px solid ${({ theme }) => theme.surface3};
@media screen and (max-width: ${BREAKPOINTS.sm}px) {
max-height: 100vh;
}
` `
function Modal({ open, children }: { open: boolean; children: ReactNode }) { function Modal({ open, children }: { open: boolean; children: ReactNode }) {
return open ? <StyledModal>{children}</StyledModal> : null return open ? <StyledModal>{children}</StyledModal> : null
} }
const FlagsColumn = styled(Column)`
max-height: 600px;
overflow-y: auto;
padding: 0px 20px;
@media screen and (max-width: ${BREAKPOINTS.sm}px) {
max-height: unset;
}
`
const Row = styled.div` const Row = styled.div`
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
...@@ -108,6 +128,7 @@ const FlagInfo = styled.div` ...@@ -108,6 +128,7 @@ const FlagInfo = styled.div`
const SaveButton = styled.button` const SaveButton = styled.button`
border-radius: 12px; border-radius: 12px;
padding: 8px; padding: 8px;
margin: 0px 20px;
background: ${({ theme }) => theme.surface3}; background: ${({ theme }) => theme.surface3};
font-weight: 535; font-weight: 535;
font-size: 16px; font-size: 16px;
...@@ -202,68 +223,96 @@ export default function FeatureFlagModal() { ...@@ -202,68 +223,96 @@ export default function FeatureFlagModal() {
return ( return (
<Modal open={open}> <Modal open={open}>
<Header> <FlagsColumn>
Feature Flag Settings <Header>
<CloseButton onClick={toggle}> Feature Flag Settings
<X size={24} /> <CloseButton onClick={toggle}>
</CloseButton> <X size={24} />
</Header> </CloseButton>
<FeatureFlagOption </Header>
variant={UniswapXVariant} <FeatureFlagOption
value={useUniswapXFlag()} variant={UniswapXVariant}
featureFlag={FeatureFlag.uniswapXEnabled} value={useUniswapXFlag()}
label="Enable UniswapX on interface" featureFlag={FeatureFlag.uniswapXEnabled}
/> label="Enable UniswapX on interface"
<FeatureFlagOption />
variant={BaseVariant} <FeatureFlagOption
value={useForceUniswapXOnFlag()} variant={BaseVariant}
featureFlag={FeatureFlag.forceUniswapXOn} value={useForceUniswapXOnFlag()}
label="Force routing api to enable UniswapX" featureFlag={FeatureFlag.forceUniswapXOn}
/> label="Force routing api to enable UniswapX"
<FeatureFlagOption />
variant={BaseVariant} <FeatureFlagOption
value={useUniswapXSyntheticQuoteFlag()} variant={BaseVariant}
featureFlag={FeatureFlag.uniswapXSyntheticQuote} value={useUniswapXSyntheticQuoteFlag()}
label="Force synthetic quotes for UniswapX" featureFlag={FeatureFlag.uniswapXSyntheticQuote}
/> label="Force synthetic quotes for UniswapX"
<FeatureFlagOption />
variant={BaseVariant} <FeatureFlagOption
value={useUniswapXEthOutputFlag()} variant={BaseVariant}
featureFlag={FeatureFlag.uniswapXEthOutputEnabled} value={useUniswapXEthOutputFlag()}
label="Enable eth output for UniswapX orders" featureFlag={FeatureFlag.uniswapXEthOutputEnabled}
/> label="Enable eth output for UniswapX orders"
<FeatureFlagOption />
variant={BaseVariant} <FeatureFlagOption
value={useUniswapXExactOutputFlag()} variant={BaseVariant}
featureFlag={FeatureFlag.uniswapXExactOutputEnabled} value={useUniswapXExactOutputFlag()}
label="Enable exact output for UniswapX orders" featureFlag={FeatureFlag.uniswapXExactOutputEnabled}
/> label="Enable exact output for UniswapX orders"
<FeatureFlagOption />
variant={BaseVariant} <FeatureFlagOption
value={useCurrencyConversionFlag()} variant={BaseVariant}
featureFlag={FeatureFlag.currencyConversion} value={useCurrencyConversionFlag()}
label="Enable currency conversion" featureFlag={FeatureFlag.currencyConversion}
/> label="Enable currency conversion"
<FeatureFlagOption />
variant={BaseVariant} <FeatureFlagOption
value={useMultichainUXFlag()} variant={BaseVariant}
featureFlag={FeatureFlag.multichainUX} value={useMultichainUXFlag()}
label="Updated Multichain UX" featureFlag={FeatureFlag.multichainUX}
/> label="Updated Multichain UX"
<FeatureFlagOption />
variant={BaseVariant}
value={useFotAdjustmentsFlag()}
featureFlag={FeatureFlag.fotAdjustedmentsEnabled}
label="Enable fee-on-transfer UI and slippage adjustments"
/>
<FeatureFlagGroup name="Debug">
<FeatureFlagOption <FeatureFlagOption
variant={TraceJsonRpcVariant} variant={BaseVariant}
value={useTraceJsonRpcFlag()} value={useFotAdjustmentsFlag()}
featureFlag={FeatureFlag.traceJsonRpc} featureFlag={FeatureFlag.fotAdjustedmentsEnabled}
label="Enables JSON-RPC tracing" label="Enable fee-on-transfer UI and slippage adjustments"
/> />
</FeatureFlagGroup> <FeatureFlagGroup name="Info Site Migration">
<FeatureFlagOption
variant={BaseVariant}
value={useInfoExploreFlag()}
featureFlag={FeatureFlag.infoExplore}
label="Info site migration - Updating Token Explore Page"
/>
<FeatureFlagOption
variant={BaseVariant}
value={useInfoTDPFlag()}
featureFlag={FeatureFlag.infoTDP}
label="Info site migration - Updating Token Details Page"
/>
<FeatureFlagOption
variant={BaseVariant}
value={useInfoPoolPageFlag()}
featureFlag={FeatureFlag.infoPoolPage}
label="Info site migration - Adding Pool Details Page"
/>
<FeatureFlagOption
variant={BaseVariant}
value={useInfoLiveViewsFlag()}
featureFlag={FeatureFlag.infoLiveViews}
label="Info site migration - Support live view graphs"
/>
</FeatureFlagGroup>
<FeatureFlagGroup name="Debug">
<FeatureFlagOption
variant={TraceJsonRpcVariant}
value={useTraceJsonRpcFlag()}
featureFlag={FeatureFlag.traceJsonRpc}
label="Enables JSON-RPC tracing"
/>
</FeatureFlagGroup>
</FlagsColumn>
<SaveButton onClick={() => window.location.reload()}>Reload</SaveButton> <SaveButton onClick={() => window.location.reload()}>Reload</SaveButton>
</Modal> </Modal>
) )
......
...@@ -209,7 +209,12 @@ export const MenuDropdown = () => { ...@@ -209,7 +209,12 @@ export const MenuDropdown = () => {
<Trans>Legal & Privacy</Trans> <Trans>Legal & Privacy</Trans>
</SecondaryLinkedText> </SecondaryLinkedText>
{(isDevelopmentEnv() || isStagingEnv()) && ( {(isDevelopmentEnv() || isStagingEnv()) && (
<SecondaryLinkedText onClick={openFeatureFlagsModal}> <SecondaryLinkedText
onClick={() => {
toggleOpen()
openFeatureFlagsModal()
}}
>
<Trans>Feature Flags</Trans> <Trans>Feature Flags</Trans>
</SecondaryLinkedText> </SecondaryLinkedText>
)} )}
......
import { BaseVariant, FeatureFlag, useBaseFlag } from '../index'
export function useInfoExploreFlag(): BaseVariant {
return useBaseFlag(FeatureFlag.infoExplore)
}
import { BaseVariant, FeatureFlag, useBaseFlag } from '../index'
export function useInfoLiveViewsFlag(): BaseVariant {
return useBaseFlag(FeatureFlag.infoLiveViews)
}
import { BaseVariant, FeatureFlag, useBaseFlag } from '../index'
export function useInfoPoolPageFlag(): BaseVariant {
return useBaseFlag(FeatureFlag.infoPoolPage)
}
import { BaseVariant, FeatureFlag, useBaseFlag } from '../index'
export function useInfoTDPFlag(): BaseVariant {
return useBaseFlag(FeatureFlag.infoTDP)
}
...@@ -18,6 +18,10 @@ export enum FeatureFlag { ...@@ -18,6 +18,10 @@ export enum FeatureFlag {
multichainUX = 'multichain_ux', multichainUX = 'multichain_ux',
currencyConversion = 'currency_conversion', currencyConversion = 'currency_conversion',
fotAdjustedmentsEnabled = 'fot_adjustments_enabled', fotAdjustedmentsEnabled = 'fot_adjustments_enabled',
infoExplore = 'info_explore',
infoTDP = 'info_tdp',
infoPoolPage = 'info_pool_page',
infoLiveViews = 'info_live_views',
} }
interface FeatureFlagsContextType { interface FeatureFlagsContextType {
......
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