Commit 3d89d724 authored by vignesh mohankumar's avatar vignesh mohankumar Committed by GitHub

chore: feature flags token favorites (#4680)

* fix: fixes TokenTable header ordering

* flag favorite tokens

* imports

* remove fav col

* hide on token details
parent c2ffab32
import { BaseVariant, FeatureFlag, featureFlagSettings, useUpdateFlag } from 'featureFlags' import { BaseVariant, FeatureFlag, featureFlagSettings, useUpdateFlag } from 'featureFlags'
import { FavoriteTokensVariant, useFavoriteTokensFlag } from 'featureFlags/flags/favoriteTokens'
import { NavBarVariant, useNavBarFlag } from 'featureFlags/flags/navBar' import { NavBarVariant, useNavBarFlag } from 'featureFlags/flags/navBar'
import { NftVariant, useNftFlag } from 'featureFlags/flags/nft' import { NftVariant, useNftFlag } from 'featureFlags/flags/nft'
import { RedesignVariant, useRedesignFlag } from 'featureFlags/flags/redesign' import { RedesignVariant, useRedesignFlag } from 'featureFlags/flags/redesign'
...@@ -232,6 +233,14 @@ export default function FeatureFlagModal() { ...@@ -232,6 +233,14 @@ export default function FeatureFlagModal() {
label="Token Safety" label="Token Safety"
/> />
</FeatureFlagGroup> </FeatureFlagGroup>
<FeatureFlagGroup name="Phase 0 Follow-ups">
<FeatureFlagOption
variant={FavoriteTokensVariant}
value={useFavoriteTokensFlag()}
featureFlag={FeatureFlag.favoriteTokens}
label="Favorite Tokens"
/>
</FeatureFlagGroup>
<FeatureFlagGroup name="Phase 1"> <FeatureFlagGroup name="Phase 1">
<FeatureFlagOption variant={NftVariant} value={useNftFlag()} featureFlag={FeatureFlag.nft} label="NFTs" /> <FeatureFlagOption variant={NftVariant} value={useNftFlag()} featureFlag={FeatureFlag.nft} label="NFTs" />
</FeatureFlagGroup> </FeatureFlagGroup>
......
...@@ -7,6 +7,7 @@ import { VerifiedIcon } from 'components/TokenSafety/TokenSafetyIcon' ...@@ -7,6 +7,7 @@ import { VerifiedIcon } from 'components/TokenSafety/TokenSafetyIcon'
import { getChainInfo } from 'constants/chainInfo' import { getChainInfo } from 'constants/chainInfo'
import { nativeOnChain, WRAPPED_NATIVE_CURRENCY } from 'constants/tokens' import { nativeOnChain, WRAPPED_NATIVE_CURRENCY } from 'constants/tokens'
import { checkWarning } from 'constants/tokenSafety' import { checkWarning } from 'constants/tokenSafety'
import { FavoriteTokensVariant, useFavoriteTokensFlag } from 'featureFlags/flags/favoriteTokens'
import { SingleTokenData } from 'graphql/data/Token' import { SingleTokenData } from 'graphql/data/Token'
import { useCurrency } from 'hooks/Tokens' import { useCurrency } from 'hooks/Tokens'
import styled from 'styled-components/macro' import styled from 'styled-components/macro'
...@@ -100,9 +101,11 @@ export default function ChartSection({ token, tokenData }: { token: Token; token ...@@ -100,9 +101,11 @@ export default function ChartSection({ token, tokenData }: { token: Token; token
{tokenName && tokenSymbol && ( {tokenName && tokenSymbol && (
<ShareButton tokenName={tokenName} tokenSymbol={tokenSymbol} tokenAddress={token.address} /> <ShareButton tokenName={tokenName} tokenSymbol={tokenSymbol} tokenAddress={token.address} />
)} )}
<ClickFavorited onClick={toggleFavorite}> {useFavoriteTokensFlag() === FavoriteTokensVariant.Enabled && (
<FavoriteIcon isFavorited={isFavorited} /> <ClickFavorited onClick={toggleFavorite}>
</ClickFavorited> <FavoriteIcon isFavorited={isFavorited} />
</ClickFavorited>
)}
</TokenActions> </TokenActions>
</TokenInfoContainer> </TokenInfoContainer>
<ChartContainer> <ChartContainer>
......
...@@ -5,6 +5,7 @@ import { EventName } from 'analytics/constants' ...@@ -5,6 +5,7 @@ import { EventName } from 'analytics/constants'
import SparklineChart from 'components/Charts/SparklineChart' import SparklineChart from 'components/Charts/SparklineChart'
import CurrencyLogo from 'components/CurrencyLogo' import CurrencyLogo from 'components/CurrencyLogo'
import { getChainInfo } from 'constants/chainInfo' import { getChainInfo } from 'constants/chainInfo'
import { FavoriteTokensVariant, useFavoriteTokensFlag } from 'featureFlags/flags/favoriteTokens'
import { getDurationDetails, SingleTokenData, TimePeriod } from 'graphql/data/Token' import { getDurationDetails, SingleTokenData, TimePeriod } from 'graphql/data/Token'
import { useCurrency } from 'hooks/Tokens' import { useCurrency } from 'hooks/Tokens'
import { useAtomValue } from 'jotai/utils' import { useAtomValue } from 'jotai/utils'
...@@ -41,11 +42,17 @@ const Cell = styled.div` ...@@ -41,11 +42,17 @@ const Cell = styled.div`
align-items: center; align-items: center;
justify-content: center; justify-content: center;
` `
const StyledTokenRow = styled.div<{ first?: boolean; last?: boolean; loading?: boolean }>` const StyledTokenRow = styled.div<{
first?: boolean
last?: boolean
loading?: boolean
favoriteTokensEnabled?: boolean
}>`
background-color: transparent; background-color: transparent;
display: grid; display: grid;
font-size: 15px; font-size: 15px;
grid-template-columns: 1fr 7fr 4fr 4fr 4fr 4fr 5fr 1.2fr; grid-template-columns: ${({ favoriteTokensEnabled }) =>
favoriteTokensEnabled ? '1fr 7fr 4fr 4fr 4fr 4fr 5fr 1.2fr' : '1fr 7fr 4fr 4fr 4fr 4fr 5fr'};
height: 60px; height: 60px;
line-height: 24px; line-height: 24px;
max-width: ${MAX_WIDTH_MEDIA_BREAKPOINT}; max-width: ${MAX_WIDTH_MEDIA_BREAKPOINT};
...@@ -394,6 +401,7 @@ export function TokenRow({ ...@@ -394,6 +401,7 @@ export function TokenRow({
volume: ReactNode volume: ReactNode
last?: boolean last?: boolean
}) { }) {
const favoriteTokensEnabled = useFavoriteTokensFlag() === FavoriteTokensVariant.Enabled
const rowCells = ( const rowCells = (
<> <>
<ListNumberCell header={header}>{listNumber}</ListNumberCell> <ListNumberCell header={header}>{listNumber}</ListNumberCell>
...@@ -403,11 +411,15 @@ export function TokenRow({ ...@@ -403,11 +411,15 @@ export function TokenRow({
<MarketCapCell sortable={header}>{marketCap}</MarketCapCell> <MarketCapCell sortable={header}>{marketCap}</MarketCapCell>
<VolumeCell sortable={header}>{volume}</VolumeCell> <VolumeCell sortable={header}>{volume}</VolumeCell>
<SparkLineCell>{sparkLine}</SparkLineCell> <SparkLineCell>{sparkLine}</SparkLineCell>
<FavoriteCell>{favorited}</FavoriteCell> {favoriteTokensEnabled && <FavoriteCell>{favorited}</FavoriteCell>}
</> </>
) )
if (header) return <StyledHeaderRow>{rowCells}</StyledHeaderRow> if (header) return <StyledHeaderRow favoriteTokensEnabled={favoriteTokensEnabled}>{rowCells}</StyledHeaderRow>
return <StyledTokenRow {...rest}>{rowCells}</StyledTokenRow> return (
<StyledTokenRow favoriteTokensEnabled={favoriteTokensEnabled} {...rest}>
{rowCells}
</StyledTokenRow>
)
} }
/* Header Row: top header row component for table */ /* Header Row: top header row component for table */
......
import { BaseVariant, FeatureFlag, useBaseFlag } from '../index'
export function useFavoriteTokensFlag(): BaseVariant {
return useBaseFlag(FeatureFlag.favoriteTokens)
}
export { BaseVariant as FavoriteTokensVariant }
export enum FeatureFlag { export enum FeatureFlag {
favoriteTokens = 'favoriteTokens',
navBar = 'navBar', navBar = 'navBar',
nft = 'nfts', nft = 'nfts',
redesign = 'redesign', redesign = 'redesign',
......
...@@ -8,6 +8,7 @@ import NetworkFilter from 'components/Tokens/TokenTable/NetworkFilter' ...@@ -8,6 +8,7 @@ import NetworkFilter from 'components/Tokens/TokenTable/NetworkFilter'
import SearchBar from 'components/Tokens/TokenTable/SearchBar' import SearchBar from 'components/Tokens/TokenTable/SearchBar'
import TimeSelector from 'components/Tokens/TokenTable/TimeSelector' import TimeSelector from 'components/Tokens/TokenTable/TimeSelector'
import TokenTable, { LoadingTokenTable } from 'components/Tokens/TokenTable/TokenTable' import TokenTable, { LoadingTokenTable } from 'components/Tokens/TokenTable/TokenTable'
import { FavoriteTokensVariant, useFavoriteTokensFlag } from 'featureFlags/flags/favoriteTokens'
import { useResetAtom } from 'jotai/utils' import { useResetAtom } from 'jotai/utils'
import { useEffect } from 'react' import { useEffect } from 'react'
import { useLocation } from 'react-router-dom' import { useLocation } from 'react-router-dom'
...@@ -83,8 +84,8 @@ const Tokens = () => { ...@@ -83,8 +84,8 @@ const Tokens = () => {
</TitleContainer> </TitleContainer>
<FiltersWrapper> <FiltersWrapper>
<FiltersContainer> <FiltersContainer>
<FavoriteButton />
<NetworkFilter /> <NetworkFilter />
{useFavoriteTokensFlag() === FavoriteTokensVariant.Enabled && <FavoriteButton />}
<TimeSelector /> <TimeSelector />
</FiltersContainer> </FiltersContainer>
<SearchContainer> <SearchContainer>
...@@ -109,8 +110,8 @@ export const LoadingTokens = () => { ...@@ -109,8 +110,8 @@ export const LoadingTokens = () => {
</TitleContainer> </TitleContainer>
<FiltersWrapper> <FiltersWrapper>
<FiltersContainer> <FiltersContainer>
<FavoriteButton />
<NetworkFilter /> <NetworkFilter />
{useFavoriteTokensFlag() === FavoriteTokensVariant.Enabled && <FavoriteButton />}
<TimeSelector /> <TimeSelector />
</FiltersContainer> </FiltersContainer>
<SearchContainer> <SearchContainer>
......
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