Commit 35d66f1e authored by Vignesh Mohankumar's avatar Vignesh Mohankumar Committed by GitHub

chore: remove nft feature flag (#5484)

* chore: remove nft feature flag

* add back wallet modal terms

* unused styles

* rm
parent e156635f
import { BaseVariant, FeatureFlag, featureFlagSettings, useUpdateFlag } from 'featureFlags' import { BaseVariant, FeatureFlag, featureFlagSettings, useUpdateFlag } from 'featureFlags'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import { TraceJsonRpcVariant, useTraceJsonRpcFlag } from 'featureFlags/flags/traceJsonRpc' import { TraceJsonRpcVariant, useTraceJsonRpcFlag } from 'featureFlags/flags/traceJsonRpc'
import { useAtomValue, useUpdateAtom } from 'jotai/utils' import { useAtomValue, useUpdateAtom } from 'jotai/utils'
import { Children, PropsWithChildren, ReactElement, ReactNode, useCallback, useState } from 'react' import { Children, PropsWithChildren, ReactElement, ReactNode, useCallback, useState } from 'react'
...@@ -202,9 +201,6 @@ export default function FeatureFlagModal() { ...@@ -202,9 +201,6 @@ export default function FeatureFlagModal() {
<X size={24} /> <X size={24} />
</CloseButton> </CloseButton>
</Header> </Header>
<FeatureFlagGroup name="Phase 1">
<FeatureFlagOption variant={NftVariant} value={useNftFlag()} featureFlag={FeatureFlag.nft} label="NFTs" />
</FeatureFlagGroup>
<FeatureFlagGroup name="Debug"> <FeatureFlagGroup name="Debug">
<FeatureFlagOption <FeatureFlagOption
variant={TraceJsonRpcVariant} variant={TraceJsonRpcVariant}
......
...@@ -72,13 +72,6 @@ export const searchBarContainerNft = style([ ...@@ -72,13 +72,6 @@ export const searchBarContainerNft = style([
}, },
]) ])
export const searchBarContainerNftOpen = style([
searchBarContainerNft,
{
boxShadow: vars.color.cardDropShadow,
},
])
export const searchBar = style([ export const searchBar = style([
baseSearchStyle, baseSearchStyle,
sprinkles({ sprinkles({
...@@ -111,16 +104,6 @@ export const searchBarInput = style([ ...@@ -111,16 +104,6 @@ export const searchBarInput = style([
}), }),
]) ])
export const searchBarDropdown = style([
baseSearchStyle,
sprinkles({
borderBottomLeftRadius: '12',
borderBottomRightRadius: '12',
height: { sm: 'viewHeight', md: 'auto' },
borderTop: 'none',
}),
])
export const searchBarDropdownNft = style([ export const searchBarDropdownNft = style([
baseSearchNftStyle, baseSearchNftStyle,
sprinkles({ sprinkles({
...@@ -244,16 +227,6 @@ export const visible = style([ ...@@ -244,16 +227,6 @@ export const visible = style([
}), }),
]) ])
export const searchContentCentered = style({
'@media': {
[`screen and (min-width: ${breakpoints.lg}px)`]: {
transform: `translateX(${DESKTOP_NAVBAR_WIDTH / 4}px)`,
transition: `transform ${vars.time[125]}`,
transitionTimingFunction: 'ease-out',
},
},
})
export const searchContentLeftAlign = style({ export const searchContentLeftAlign = style({
'@media': { '@media': {
[`screen and (min-width: ${breakpoints.lg}px)`]: { [`screen and (min-width: ${breakpoints.lg}px)`]: {
......
...@@ -3,7 +3,6 @@ import { t } from '@lingui/macro' ...@@ -3,7 +3,6 @@ import { t } from '@lingui/macro'
import { sendAnalyticsEvent, Trace, TraceEvent, useTrace } from '@uniswap/analytics' import { sendAnalyticsEvent, Trace, TraceEvent, useTrace } from '@uniswap/analytics'
import { BrowserEvent, ElementName, EventName, SectionName } from '@uniswap/analytics-events' import { BrowserEvent, ElementName, EventName, SectionName } from '@uniswap/analytics-events'
import clsx from 'clsx' import clsx from 'clsx'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import useDebounce from 'hooks/useDebounce' import useDebounce from 'hooks/useDebounce'
import { useIsNftPage } from 'hooks/useIsNftPage' import { useIsNftPage } from 'hooks/useIsNftPage'
import { useOnClickOutside } from 'hooks/useOnClickOutside' import { useOnClickOutside } from 'hooks/useOnClickOutside'
...@@ -47,10 +46,8 @@ export const SearchBar = () => { ...@@ -47,10 +46,8 @@ export const SearchBar = () => {
const searchRef = useRef<HTMLDivElement>(null) const searchRef = useRef<HTMLDivElement>(null)
const inputRef = useRef<HTMLInputElement>(null) const inputRef = useRef<HTMLInputElement>(null)
const { pathname } = useLocation() const { pathname } = useLocation()
const phase1Flag = useNftFlag()
const isMobile = useIsMobile() const isMobile = useIsMobile()
const isTablet = useIsTablet() const isTablet = useIsTablet()
const isPhase1 = phase1Flag === NftVariant.Enabled
useOnClickOutside(searchRef, () => { useOnClickOutside(searchRef, () => {
isOpen && toggleOpen() isOpen && toggleOpen()
...@@ -63,7 +60,7 @@ export const SearchBar = () => { ...@@ -63,7 +60,7 @@ export const SearchBar = () => {
refetchOnWindowFocus: false, refetchOnWindowFocus: false,
refetchOnMount: false, refetchOnMount: false,
refetchOnReconnect: false, refetchOnReconnect: false,
enabled: !!debouncedSearchValue.length && isPhase1, enabled: !!debouncedSearchValue.length,
} }
) )
...@@ -111,8 +108,6 @@ export const SearchBar = () => { ...@@ -111,8 +108,6 @@ export const SearchBar = () => {
}, [isOpen]) }, [isOpen])
const isMobileOrTablet = isMobile || isTablet const isMobileOrTablet = isMobile || isTablet
const showCenteredSearchContent =
!isOpen && phase1Flag !== NftVariant.Enabled && !isMobileOrTablet && searchValue.length === 0
const trace = useTrace({ section: SectionName.NAVBAR_SEARCH }) const trace = useTrace({ section: SectionName.NAVBAR_SEARCH })
...@@ -122,12 +117,8 @@ export const SearchBar = () => { ...@@ -122,12 +117,8 @@ export const SearchBar = () => {
...trace, ...trace,
} }
const placeholderText = useMemo(() => { const placeholderText = useMemo(() => {
return phase1Flag === NftVariant.Enabled return isMobileOrTablet ? t`Search` : t`Search tokens and NFT collections`
? isMobileOrTablet }, [isMobileOrTablet])
? t`Search`
: t`Search tokens and NFT collections`
: t`Search tokens`
}, [phase1Flag, isMobileOrTablet])
const handleKeyPress = useCallback( const handleKeyPress = useCallback(
(event: any) => { (event: any) => {
...@@ -160,12 +151,12 @@ export const SearchBar = () => { ...@@ -160,12 +151,12 @@ export const SearchBar = () => {
position={{ sm: 'fixed', md: 'absolute', xl: 'relative' }} position={{ sm: 'fixed', md: 'absolute', xl: 'relative' }}
width={{ sm: isOpen ? 'viewWidth' : 'auto', md: 'auto' }} width={{ sm: isOpen ? 'viewWidth' : 'auto', md: 'auto' }}
ref={searchRef} ref={searchRef}
className={isPhase1 ? styles.searchBarContainerNft : styles.searchBarContainer} className={styles.searchBarContainerNft}
display={{ sm: isOpen ? 'inline-block' : 'none', xl: 'inline-block' }} display={{ sm: isOpen ? 'inline-block' : 'none', xl: 'inline-block' }}
> >
<Row <Row
className={clsx( className={clsx(
` ${isPhase1 ? styles.nftSearchBar : styles.searchBar} ${!isOpen && !isMobile && magicalGradientOnHover} ${ ` ${styles.nftSearchBar} ${!isOpen && !isMobile && magicalGradientOnHover} ${
isMobileOrTablet && (isOpen ? styles.visible : styles.hidden) isMobileOrTablet && (isOpen ? styles.visible : styles.hidden)
} ` } `
)} )}
...@@ -177,7 +168,7 @@ export const SearchBar = () => { ...@@ -177,7 +168,7 @@ export const SearchBar = () => {
onClick={() => !isOpen && toggleOpen()} onClick={() => !isOpen && toggleOpen()}
gap="12" gap="12"
> >
<Box className={showCenteredSearchContent ? styles.searchContentCentered : styles.searchContentLeftAlign}> <Box className={styles.searchContentLeftAlign}>
<Box display={{ sm: 'none', md: 'flex' }}> <Box display={{ sm: 'none', md: 'flex' }}>
<MagnifyingGlassIcon /> <MagnifyingGlassIcon />
</Box> </Box>
...@@ -199,15 +190,13 @@ export const SearchBar = () => { ...@@ -199,15 +190,13 @@ export const SearchBar = () => {
setSearchValue(event.target.value) setSearchValue(event.target.value)
}} }}
onBlur={() => sendAnalyticsEvent(EventName.NAVBAR_SEARCH_EXITED, navbarSearchEventProperties)} onBlur={() => sendAnalyticsEvent(EventName.NAVBAR_SEARCH_EXITED, navbarSearchEventProperties)}
className={`${styles.searchBarInput} ${ className={`${styles.searchBarInput} ${styles.searchContentLeftAlign}`}
showCenteredSearchContent ? styles.searchContentCentered : styles.searchContentLeftAlign
}`}
value={searchValue} value={searchValue}
ref={inputRef} ref={inputRef}
width={phase1Flag === NftVariant.Enabled || isOpen ? 'full' : '160'} width="full"
/> />
</TraceEvent> </TraceEvent>
{!isOpen && isPhase1 && <KeyShortCut>/</KeyShortCut>} {!isOpen && <KeyShortCut>/</KeyShortCut>}
</Row> </Row>
<Box className={clsx(isOpen ? styles.visible : styles.hidden)}> <Box className={clsx(isOpen ? styles.visible : styles.hidden)}>
{isOpen && ( {isOpen && (
...@@ -217,7 +206,7 @@ export const SearchBar = () => { ...@@ -217,7 +206,7 @@ export const SearchBar = () => {
collections={reducedCollections} collections={reducedCollections}
queryText={debouncedSearchValue} queryText={debouncedSearchValue}
hasInput={debouncedSearchValue.length > 0} hasInput={debouncedSearchValue.length > 0}
isLoading={tokensAreLoading || (collectionsAreLoading && phase1Flag === NftVariant.Enabled)} isLoading={tokensAreLoading || collectionsAreLoading}
/> />
)} )}
</Box> </Box>
......
import { Trans } from '@lingui/macro' import { Trans } from '@lingui/macro'
import { useTrace } from '@uniswap/analytics' import { useTrace } from '@uniswap/analytics'
import { NavBarSearchTypes, SectionName } from '@uniswap/analytics-events' import { NavBarSearchTypes, SectionName } from '@uniswap/analytics-events'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import { useIsNftPage } from 'hooks/useIsNftPage' import { useIsNftPage } from 'hooks/useIsNftPage'
import { Box } from 'nft/components/Box' import { Box } from 'nft/components/Box'
import { Column, Row } from 'nft/components/Flex' import { Column, Row } from 'nft/components/Flex'
...@@ -116,9 +115,7 @@ export const SearchBarDropdown = ({ ...@@ -116,9 +115,7 @@ export const SearchBarDropdown = ({
const { pathname } = useLocation() const { pathname } = useLocation()
const isNFTPage = useIsNftPage() const isNFTPage = useIsNftPage()
const isTokenPage = pathname.includes('/tokens') const isTokenPage = pathname.includes('/tokens')
const phase1Flag = useNftFlag()
const [resultsState, setResultsState] = useState<ReactNode>() const [resultsState, setResultsState] = useState<ReactNode>()
const isPhase1 = phase1Flag === NftVariant.Enabled
const { data: trendingCollectionResults, isLoading: trendingCollectionsAreLoading } = useQuery( const { data: trendingCollectionResults, isLoading: trendingCollectionsAreLoading } = useQuery(
['trendingCollections', 'eth', 'twenty_four_hours'], ['trendingCollections', 'eth', 'twenty_four_hours'],
...@@ -157,7 +154,7 @@ export const SearchBarDropdown = ({ ...@@ -157,7 +154,7 @@ export const SearchBarDropdown = ({
trendingTokenResults?.forEach(updateSearchHistory) trendingTokenResults?.forEach(updateSearchHistory)
}, [trendingTokenResults, updateSearchHistory]) }, [trendingTokenResults, updateSearchHistory])
const trendingTokensLength = phase1Flag === NftVariant.Enabled ? (isTokenPage ? 3 : 2) : 4 const trendingTokensLength = isTokenPage ? 3 : 2
const trendingTokens = useMemo( const trendingTokens = useMemo(
() => () =>
trendingTokenResults trendingTokenResults
...@@ -231,24 +228,22 @@ export const SearchBarDropdown = ({ ...@@ -231,24 +228,22 @@ export const SearchBarDropdown = ({
) )
const collectionSearchResults = const collectionSearchResults =
phase1Flag === NftVariant.Enabled ? ( collections.length > 0 ? (
collections.length > 0 ? ( <SearchBarDropdownSection
<SearchBarDropdownSection hoveredIndex={hoveredIndex}
hoveredIndex={hoveredIndex} startingIndex={showCollectionsFirst ? 0 : tokens.length}
startingIndex={showCollectionsFirst ? 0 : tokens.length} setHoveredIndex={setHoveredIndex}
setHoveredIndex={setHoveredIndex} toggleOpen={toggleOpen}
toggleOpen={toggleOpen} suggestions={collections}
suggestions={collections} eventProperties={{
eventProperties={{ suggestion_type: NavBarSearchTypes.COLLECTION_SUGGESTION,
suggestion_type: NavBarSearchTypes.COLLECTION_SUGGESTION, ...eventProperties,
...eventProperties, }}
}} header={<Trans>NFT Collections</Trans>}
header={<Trans>NFT Collections</Trans>} />
/> ) : (
) : ( <Box className={styles.notFoundContainer}>No NFT collections found.</Box>
<Box className={styles.notFoundContainer}>No NFT collections found.</Box> )
)
) : null
const currentState = () => const currentState = () =>
hasInput ? ( hasInput ? (
...@@ -300,7 +295,7 @@ export const SearchBarDropdown = ({ ...@@ -300,7 +295,7 @@ export const SearchBarDropdown = ({
isLoading={trendingTokensAreLoading} isLoading={trendingTokensAreLoading}
/> />
)} )}
{!isTokenPage && phase1Flag === NftVariant.Enabled && ( {!isTokenPage && (
<SearchBarDropdownSection <SearchBarDropdownSection
hoveredIndex={hoveredIndex} hoveredIndex={hoveredIndex}
startingIndex={shortenedHistory.length + (isNFTPage ? 0 : trendingTokens?.length ?? 0)} startingIndex={shortenedHistory.length + (isNFTPage ? 0 : trendingTokens?.length ?? 0)}
...@@ -330,7 +325,6 @@ export const SearchBarDropdown = ({ ...@@ -330,7 +325,6 @@ export const SearchBarDropdown = ({
trendingTokens, trendingTokens,
trendingTokensAreLoading, trendingTokensAreLoading,
hoveredIndex, hoveredIndex,
phase1Flag,
toggleOpen, toggleOpen,
shortenedHistory, shortenedHistory,
hasInput, hasInput,
...@@ -343,7 +337,7 @@ export const SearchBarDropdown = ({ ...@@ -343,7 +337,7 @@ export const SearchBarDropdown = ({
]) ])
return ( return (
<Box className={isPhase1 ? styles.searchBarDropdownNft : styles.searchBarDropdown}> <Box className={styles.searchBarDropdownNft}>
<Box opacity={isLoading ? '0.3' : '1'} transition="125"> <Box opacity={isLoading ? '0.3' : '1'} transition="125">
{resultsState} {resultsState}
</Box> </Box>
......
import { Trans } from '@lingui/macro' import { Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core' import { useWeb3React } from '@web3-react/core'
import Web3Status from 'components/Web3Status' import Web3Status from 'components/Web3Status'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import { chainIdToBackendName } from 'graphql/data/util' import { chainIdToBackendName } from 'graphql/data/util'
import { useIsNftPage } from 'hooks/useIsNftPage' import { useIsNftPage } from 'hooks/useIsNftPage'
import { Box } from 'nft/components/Box' import { Box } from 'nft/components/Box'
...@@ -56,7 +55,6 @@ const MenuItem = ({ href, id, isActive, children }: MenuItemProps) => { ...@@ -56,7 +55,6 @@ const MenuItem = ({ href, id, isActive, children }: MenuItemProps) => {
const PageTabs = () => { const PageTabs = () => {
const { pathname } = useLocation() const { pathname } = useLocation()
const nftFlag = useNftFlag()
const { chainId: connectedChainId } = useWeb3React() const { chainId: connectedChainId } = useWeb3React()
const chainName = chainIdToBackendName(connectedChainId) const chainName = chainIdToBackendName(connectedChainId)
...@@ -77,11 +75,9 @@ const PageTabs = () => { ...@@ -77,11 +75,9 @@ const PageTabs = () => {
<MenuItem href={`/tokens/${chainName.toLowerCase()}`} isActive={pathname.startsWith('/tokens')}> <MenuItem href={`/tokens/${chainName.toLowerCase()}`} isActive={pathname.startsWith('/tokens')}>
<Trans>Tokens</Trans> <Trans>Tokens</Trans>
</MenuItem> </MenuItem>
{nftFlag === NftVariant.Enabled && ( <MenuItem href="/nfts" isActive={isNftPage}>
<MenuItem href="/nfts" isActive={isNftPage}> <Trans>NFTs</Trans>
<Trans>NFTs</Trans> </MenuItem>
</MenuItem>
)}
<MenuItem href="/pool" id="pool-nav-link" isActive={isPoolActive}> <MenuItem href="/pool" id="pool-nav-link" isActive={isPoolActive}>
<Trans>Pool</Trans> <Trans>Pool</Trans>
</MenuItem> </MenuItem>
......
import { useWeb3React } from '@web3-react/core' import { useWeb3React } from '@web3-react/core'
import AddressClaimModal from 'components/claim/AddressClaimModal' import AddressClaimModal from 'components/claim/AddressClaimModal'
import ConnectedAccountBlocked from 'components/ConnectedAccountBlocked' import ConnectedAccountBlocked from 'components/ConnectedAccountBlocked'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import useAccountRiskCheck from 'hooks/useAccountRiskCheck' import useAccountRiskCheck from 'hooks/useAccountRiskCheck'
import NftExploreBanner from 'nft/components/nftExploreBanner/NftExploreBanner' import NftExploreBanner from 'nft/components/nftExploreBanner/NftExploreBanner'
import { lazy } from 'react' import { lazy } from 'react'
...@@ -20,7 +19,6 @@ export default function TopLevelModals() { ...@@ -20,7 +19,6 @@ export default function TopLevelModals() {
const blockedAccountModalOpen = useModalIsOpen(ApplicationModal.BLOCKED_ACCOUNT) const blockedAccountModalOpen = useModalIsOpen(ApplicationModal.BLOCKED_ACCOUNT)
const { account } = useWeb3React() const { account } = useWeb3React()
const location = useLocation() const location = useLocation()
const isNftEnabled = useNftFlag() === NftVariant.Enabled
const pageShowsNftPromoBanner = const pageShowsNftPromoBanner =
location.pathname.startsWith('/swap') || location.pathname.startsWith('/swap') ||
location.pathname.startsWith('/tokens') || location.pathname.startsWith('/tokens') ||
...@@ -33,13 +31,9 @@ export default function TopLevelModals() { ...@@ -33,13 +31,9 @@ export default function TopLevelModals() {
<AddressClaimModal isOpen={addressClaimOpen} onDismiss={addressClaimToggle} /> <AddressClaimModal isOpen={addressClaimOpen} onDismiss={addressClaimToggle} />
<ConnectedAccountBlocked account={account} isOpen={open} /> <ConnectedAccountBlocked account={account} isOpen={open} />
<Bag /> <Bag />
{isNftEnabled && ( <TransactionCompleteModal />
<> <AirdropModal />
<TransactionCompleteModal /> {pageShowsNftPromoBanner && <NftExploreBanner />}
<AirdropModal />
{pageShowsNftPromoBanner && <NftExploreBanner />}
</>
)}
</> </>
) )
} }
...@@ -4,7 +4,6 @@ import { useWeb3React } from '@web3-react/core' ...@@ -4,7 +4,6 @@ import { useWeb3React } from '@web3-react/core'
import { getConnection } from 'connection/utils' import { getConnection } from 'connection/utils'
import { getChainInfoOrDefault } from 'constants/chainInfo' import { getChainInfoOrDefault } from 'constants/chainInfo'
import { SupportedChainId } from 'constants/chains' import { SupportedChainId } from 'constants/chains'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import useCopyClipboard from 'hooks/useCopyClipboard' import useCopyClipboard from 'hooks/useCopyClipboard'
import useStablecoinPrice from 'hooks/useStablecoinPrice' import useStablecoinPrice from 'hooks/useStablecoinPrice'
import useNativeCurrency from 'lib/hooks/useNativeCurrency' import useNativeCurrency from 'lib/hooks/useNativeCurrency'
...@@ -111,7 +110,6 @@ const AuthenticatedHeader = () => { ...@@ -111,7 +110,6 @@ const AuthenticatedHeader = () => {
nativeCurrency: { symbol: nativeCurrencySymbol }, nativeCurrency: { symbol: nativeCurrencySymbol },
explorer, explorer,
} = getChainInfoOrDefault(chainId ? chainId : SupportedChainId.MAINNET) } = getChainInfoOrDefault(chainId ? chainId : SupportedChainId.MAINNET)
const nftFlag = useNftFlag()
const navigate = useNavigate() const navigate = useNavigate()
const closeModal = useCloseModal(ApplicationModal.WALLET_DROPDOWN) const closeModal = useCloseModal(ApplicationModal.WALLET_DROPDOWN)
...@@ -179,17 +177,15 @@ const AuthenticatedHeader = () => { ...@@ -179,17 +177,15 @@ const AuthenticatedHeader = () => {
</Text> </Text>
<USDText>${amountUSD.toFixed(2)} USD</USDText> <USDText>${amountUSD.toFixed(2)} USD</USDText>
</BalanceWrapper> </BalanceWrapper>
{nftFlag === NftVariant.Enabled && ( <ProfileButton onClick={navigateToProfile} size={ButtonSize.medium} emphasis={ButtonEmphasis.medium}>
<ProfileButton onClick={navigateToProfile} size={ButtonSize.medium} emphasis={ButtonEmphasis.medium}> <Trans>View and sell NFTs</Trans>
<Trans>View and sell NFTs</Trans> </ProfileButton>
</ProfileButton>
)}
{isUnclaimed && ( {isUnclaimed && (
<UNIButton onClick={openClaimModal} size={ButtonSize.medium} emphasis={ButtonEmphasis.medium}> <UNIButton onClick={openClaimModal} size={ButtonSize.medium} emphasis={ButtonEmphasis.medium}>
<Trans>Claim</Trans> {unclaimedAmount?.toFixed(0, { groupSeparator: ',' } ?? '-')} <Trans>reward</Trans> <Trans>Claim</Trans> {unclaimedAmount?.toFixed(0, { groupSeparator: ',' } ?? '-')} <Trans>reward</Trans>
</UNIButton> </UNIButton>
)} )}
{nftFlag === NftVariant.Enabled && isClaimAvailable && ( {isClaimAvailable && (
<UNIButton size={ButtonSize.medium} emphasis={ButtonEmphasis.medium} onClick={openNftModal}> <UNIButton size={ButtonSize.medium} emphasis={ButtonEmphasis.medium} onClick={openNftModal}>
<Trans>Claim Uniswap NFT Airdrop</Trans> <Trans>Claim Uniswap NFT Airdrop</Trans>
</UNIButton> </UNIButton>
......
...@@ -8,7 +8,6 @@ import { AutoColumn } from 'components/Column' ...@@ -8,7 +8,6 @@ import { AutoColumn } from 'components/Column'
import { AutoRow } from 'components/Row' import { AutoRow } from 'components/Row'
import { networkConnection } from 'connection' import { networkConnection } from 'connection'
import { getConnection, getConnectionName, getIsCoinbaseWallet, getIsInjected, getIsMetaMask } from 'connection/utils' import { getConnection, getConnectionName, getIsCoinbaseWallet, getIsInjected, getIsMetaMask } from 'connection/utils'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import usePrevious from 'hooks/usePrevious' import usePrevious from 'hooks/usePrevious'
import { useCallback, useEffect, useState } from 'react' import { useCallback, useEffect, useState } from 'react'
import { ArrowLeft } from 'react-feather' import { ArrowLeft } from 'react-feather'
...@@ -25,7 +24,6 @@ import { useModalIsOpen, useToggleWalletModal } from '../../state/application/ho ...@@ -25,7 +24,6 @@ import { useModalIsOpen, useToggleWalletModal } from '../../state/application/ho
import { ApplicationModal } from '../../state/application/reducer' import { ApplicationModal } from '../../state/application/reducer'
import { ExternalLink, ThemedText } from '../../theme' import { ExternalLink, ThemedText } from '../../theme'
import AccountDetails from '../AccountDetails' import AccountDetails from '../AccountDetails'
import { LightCard } from '../Card'
import Modal from '../Modal' import Modal from '../Modal'
import { CoinbaseWalletOption, OpenCoinbaseWalletOption } from './CoinbaseWalletOption' import { CoinbaseWalletOption, OpenCoinbaseWalletOption } from './CoinbaseWalletOption'
import { InjectedOption, InstallMetaMaskOption, MetaMaskOption } from './InjectedOption' import { InjectedOption, InstallMetaMaskOption, MetaMaskOption } from './InjectedOption'
...@@ -155,7 +153,6 @@ export default function WalletModal({ ...@@ -155,7 +153,6 @@ export default function WalletModal({
const [connectedWallets, addWalletToConnectedWallets] = useConnectedWallets() const [connectedWallets, addWalletToConnectedWallets] = useConnectedWallets()
const nftFlagEnabled = useNftFlag() === NftVariant.Enabled
const [walletView, setWalletView] = useState(WALLET_VIEWS.ACCOUNT) const [walletView, setWalletView] = useState(WALLET_VIEWS.ACCOUNT)
const [lastActiveWalletAddress, setLastActiveWalletAddress] = useState<string | undefined>(account) const [lastActiveWalletAddress, setLastActiveWalletAddress] = useState<string | undefined>(account)
...@@ -314,8 +311,8 @@ export default function WalletModal({ ...@@ -314,8 +311,8 @@ export default function WalletModal({
) )
} }
function getTermsOfService(nftFlagEnabled: boolean, walletView: string) { function getTermsOfService(walletView: string) {
if (nftFlagEnabled && walletView === WALLET_VIEWS.PENDING) return null if (walletView === WALLET_VIEWS.PENDING) return null
const content = ( const content = (
<Trans> <Trans>
...@@ -324,18 +321,12 @@ export default function WalletModal({ ...@@ -324,18 +321,12 @@ export default function WalletModal({
<ExternalLink href="https://uniswap.org/privacy-policy">Privacy Policy</ExternalLink>. <ExternalLink href="https://uniswap.org/privacy-policy">Privacy Policy</ExternalLink>.
</Trans> </Trans>
) )
return nftFlagEnabled ? ( return (
<AutoRow style={{ flexWrap: 'nowrap', padding: '4px 16px' }}> <AutoRow style={{ flexWrap: 'nowrap', padding: '4px 16px' }}>
<ThemedText.BodySecondary fontSize={16} lineHeight="24px"> <ThemedText.BodySecondary fontSize={16} lineHeight="24px">
{content} {content}
</ThemedText.BodySecondary> </ThemedText.BodySecondary>
</AutoRow> </AutoRow>
) : (
<LightCard>
<AutoRow style={{ flexWrap: 'nowrap' }}>
<ThemedText.DeprecatedBody fontSize={12}>{content}</ThemedText.DeprecatedBody>
</AutoRow>
</LightCard>
) )
} }
...@@ -356,7 +347,7 @@ export default function WalletModal({ ...@@ -356,7 +347,7 @@ export default function WalletModal({
/> />
)} )}
{walletView !== WALLET_VIEWS.PENDING && <OptionGrid data-testid="option-grid">{getOptions()}</OptionGrid>} {walletView !== WALLET_VIEWS.PENDING && <OptionGrid data-testid="option-grid">{getOptions()}</OptionGrid>}
{!pendingError && getTermsOfService(nftFlagEnabled, walletView)} {!pendingError && getTermsOfService(walletView)}
</AutoColumn> </AutoColumn>
</ContentWrapper> </ContentWrapper>
</UpperSection> </UpperSection>
......
...@@ -5,7 +5,6 @@ import { useWeb3React } from '@web3-react/core' ...@@ -5,7 +5,6 @@ import { useWeb3React } from '@web3-react/core'
import { IconWrapper } from 'components/Identicon/StatusIcon' import { IconWrapper } from 'components/Identicon/StatusIcon'
import WalletDropdown from 'components/WalletDropdown' import WalletDropdown from 'components/WalletDropdown'
import { getConnection } from 'connection/utils' import { getConnection } from 'connection/utils'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import { Portal } from 'nft/components/common/Portal' import { Portal } from 'nft/components/common/Portal'
import { useIsNftClaimAvailable } from 'nft/hooks/useIsNftClaimAvailable' import { useIsNftClaimAvailable } from 'nft/hooks/useIsNftClaimAvailable'
import { getIsValidSwapQuote } from 'pages/Swap' import { getIsValidSwapQuote } from 'pages/Swap'
...@@ -99,7 +98,6 @@ const Web3StatusConnectWrapper = styled.div<{ faded?: boolean }>` ...@@ -99,7 +98,6 @@ const Web3StatusConnectWrapper = styled.div<{ faded?: boolean }>`
const Web3StatusConnected = styled(Web3StatusGeneric)<{ const Web3StatusConnected = styled(Web3StatusGeneric)<{
pending?: boolean pending?: boolean
isNftActive?: boolean
isClaimAvailable?: boolean isClaimAvailable?: boolean
}>` }>`
background-color: ${({ pending, theme }) => (pending ? theme.deprecated_primary1 : theme.deprecated_bg1)}; background-color: ${({ pending, theme }) => (pending ? theme.deprecated_primary1 : theme.deprecated_bg1)};
...@@ -119,19 +117,19 @@ const Web3StatusConnected = styled(Web3StatusGeneric)<{ ...@@ -119,19 +117,19 @@ const Web3StatusConnected = styled(Web3StatusGeneric)<{
} }
@media only screen and (max-width: ${({ theme }) => `${theme.breakpoint.lg}px`}) { @media only screen and (max-width: ${({ theme }) => `${theme.breakpoint.lg}px`}) {
width: ${({ isNftActive, pending }) => isNftActive && !pending && '36px'}; width: ${({ pending }) => !pending && '36px'};
${IconWrapper} { ${IconWrapper} {
margin-right: ${({ isNftActive }) => isNftActive && 0}; margin-right: 0;
} }
} }
` `
const AddressAndChevronContainer = styled.div<{ isNftActive?: boolean }>` const AddressAndChevronContainer = styled.div`
display: flex; display: flex;
@media only screen and (max-width: ${({ theme }) => `${theme.breakpoint.lg}px`}) { @media only screen and (max-width: ${({ theme }) => `${theme.breakpoint.lg}px`}) {
display: ${({ isNftActive }) => isNftActive && 'none'}; display: none;
} }
` `
...@@ -212,7 +210,6 @@ function Web3StatusInner() { ...@@ -212,7 +210,6 @@ function Web3StatusInner() {
const isClaimAvailable = useIsNftClaimAvailable((state) => state.isClaimAvailable) const isClaimAvailable = useIsNftClaimAvailable((state) => state.isClaimAvailable)
const error = useAppSelector((state) => state.connection.errorByConnectionType[getConnection(connector).type]) const error = useAppSelector((state) => state.connection.errorByConnectionType[getConnection(connector).type])
const isNftActive = useNftFlag() === NftVariant.Enabled
const allTransactions = useAllTransactions() const allTransactions = useAllTransactions()
...@@ -246,7 +243,6 @@ function Web3StatusInner() { ...@@ -246,7 +243,6 @@ function Web3StatusInner() {
return ( return (
<Web3StatusConnected <Web3StatusConnected
data-testid="web3-status-connected" data-testid="web3-status-connected"
isNftActive={isNftActive}
onClick={toggleWallet} onClick={toggleWallet}
pending={hasPendingTransactions} pending={hasPendingTransactions}
isClaimAvailable={isClaimAvailable} isClaimAvailable={isClaimAvailable}
...@@ -260,7 +256,7 @@ function Web3StatusInner() { ...@@ -260,7 +256,7 @@ function Web3StatusInner() {
<Loader stroke="white" /> <Loader stroke="white" />
</RowBetween> </RowBetween>
) : ( ) : (
<AddressAndChevronContainer isNftActive={isNftActive}> <AddressAndChevronContainer>
<Text>{ENSName || shortenAddress(account)}</Text> <Text>{ENSName || shortenAddress(account)}</Text>
{walletIsOpen ? <ChevronUp {...chevronProps} /> : <ChevronDown {...chevronProps} />} {walletIsOpen ? <ChevronUp {...chevronProps} /> : <ChevronDown {...chevronProps} />}
</AddressAndChevronContainer> </AddressAndChevronContainer>
......
export enum FeatureFlag { export enum FeatureFlag {
favoriteTokens = 'favoriteTokens', favoriteTokens = 'favoriteTokens',
nft = 'nfts',
traceJsonRpc = 'traceJsonRpc', traceJsonRpc = 'traceJsonRpc',
multiNetworkBalances = 'multiNetworkBalances', multiNetworkBalances = 'multiNetworkBalances',
landingPage = 'landingPage', landingPage = 'landingPage',
......
import { BaseVariant } from '../index'
export function useNftFlag(): BaseVariant {
return BaseVariant.Enabled
}
export { BaseVariant as NftVariant }
...@@ -3,7 +3,6 @@ import { CustomUserProperties, EventName, getBrowser, PageName } from '@uniswap/ ...@@ -3,7 +3,6 @@ import { CustomUserProperties, EventName, getBrowser, PageName } from '@uniswap/
import Loader from 'components/Loader' import Loader from 'components/Loader'
import TopLevelModals from 'components/TopLevelModals' import TopLevelModals from 'components/TopLevelModals'
import { useFeatureFlagsIsLoaded } from 'featureFlags' import { useFeatureFlagsIsLoaded } from 'featureFlags'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import ApeModeQueryParamReader from 'hooks/useApeModeQueryParamReader' import ApeModeQueryParamReader from 'hooks/useApeModeQueryParamReader'
import { CollectionPageSkeleton } from 'nft/components/collection/CollectionPageSkeleton' import { CollectionPageSkeleton } from 'nft/components/collection/CollectionPageSkeleton'
import { AssetDetailsLoading } from 'nft/components/details/AssetDetailsLoading' import { AssetDetailsLoading } from 'nft/components/details/AssetDetailsLoading'
...@@ -133,7 +132,6 @@ const LazyLoadSpinner = () => ( ...@@ -133,7 +132,6 @@ const LazyLoadSpinner = () => (
export default function App() { export default function App() {
const isLoaded = useFeatureFlagsIsLoaded() const isLoaded = useFeatureFlagsIsLoaded()
const nftFlag = useNftFlag()
const { pathname } = useLocation() const { pathname } = useLocation()
const currentPage = getCurrentPageFromLocation(pathname) const currentPage = getCurrentPageFromLocation(pathname)
...@@ -169,7 +167,7 @@ export default function App() { ...@@ -169,7 +167,7 @@ export default function App() {
}, [isExpertMode]) }, [isExpertMode])
useEffect(() => { useEffect(() => {
const scrollListener = (e: Event) => { const scrollListener = () => {
setScrolledState(window.scrollY > 0) setScrolledState(window.scrollY > 0)
} }
window.addEventListener('scroll', scrollListener) window.addEventListener('scroll', scrollListener)
...@@ -247,51 +245,47 @@ export default function App() { ...@@ -247,51 +245,47 @@ export default function App() {
<Route path="*" element={<RedirectPathToSwapOnly />} /> <Route path="*" element={<RedirectPathToSwapOnly />} />
{nftFlag === NftVariant.Enabled && ( <Route
<> path="/nfts"
<Route element={
path="/nfts" // TODO: replace loading state during Apollo migration
element={ <Suspense fallback={null}>
// TODO: replace loading state during Apollo migration <NftExplore />
<Suspense fallback={null}> </Suspense>
<NftExplore /> }
</Suspense> />
} <Route
/> path="/nfts/asset/:contractAddress/:tokenId"
<Route element={
path="/nfts/asset/:contractAddress/:tokenId" <Suspense fallback={<AssetDetailsLoading />}>
element={ <Asset />
<Suspense fallback={<AssetDetailsLoading />}> </Suspense>
<Asset /> }
</Suspense> />
} <Route
/> path="/nfts/profile"
<Route element={
path="/nfts/profile" <Suspense fallback={<ProfilePageLoadingSkeleton />}>
element={ <Profile />
<Suspense fallback={<ProfilePageLoadingSkeleton />}> </Suspense>
<Profile /> }
</Suspense> />
} <Route
/> path="/nfts/collection/:contractAddress"
<Route element={
path="/nfts/collection/:contractAddress" <Suspense fallback={<CollectionPageSkeleton />}>
element={ <Collection />
<Suspense fallback={<CollectionPageSkeleton />}> </Suspense>
<Collection /> }
</Suspense> />
} <Route
/> path="/nfts/collection/:contractAddress/activity"
<Route element={
path="/nfts/collection/:contractAddress/activity" <Suspense fallback={<CollectionPageSkeleton />}>
element={ <Collection />
<Suspense fallback={<CollectionPageSkeleton />}> </Suspense>
<Collection /> }
</Suspense> />
}
/>
</>
)}
</Routes> </Routes>
) : ( ) : (
<Loader /> <Loader />
......
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