Commit 6df2f367 authored by Jordan Frankfurt's avatar Jordan Frankfurt Committed by GitHub

fix: use general sort rank instead of only volume rank for row numbers (#5955)

parent 80edf5a0
...@@ -424,12 +424,12 @@ interface LoadedRowProps { ...@@ -424,12 +424,12 @@ interface LoadedRowProps {
tokenListLength: number tokenListLength: number
token: NonNullable<TopToken> token: NonNullable<TopToken>
sparklineMap: SparklineMap sparklineMap: SparklineMap
volumeRank: number sortRank: number
} }
/* Loaded State: row component with token information */ /* Loaded State: row component with token information */
export const LoadedRow = forwardRef((props: LoadedRowProps, ref: ForwardedRef<HTMLDivElement>) => { export const LoadedRow = forwardRef((props: LoadedRowProps, ref: ForwardedRef<HTMLDivElement>) => {
const { tokenListIndex, tokenListLength, token, volumeRank } = props const { tokenListIndex, tokenListLength, token, sortRank } = props
const filterString = useAtomValue(filterStringAtom) const filterString = useAtomValue(filterStringAtom)
const lowercaseChainName = useParams<{ chainName?: string }>().chainName?.toUpperCase() ?? 'ethereum' const lowercaseChainName = useParams<{ chainName?: string }>().chainName?.toUpperCase() ?? 'ethereum'
...@@ -446,7 +446,7 @@ export const LoadedRow = forwardRef((props: LoadedRowProps, ref: ForwardedRef<HT ...@@ -446,7 +446,7 @@ export const LoadedRow = forwardRef((props: LoadedRowProps, ref: ForwardedRef<HT
token_address: token.address, token_address: token.address,
token_symbol: token.symbol, token_symbol: token.symbol,
token_list_index: tokenListIndex, token_list_index: tokenListIndex,
token_list_rank: volumeRank, token_list_rank: sortRank,
token_list_length: tokenListLength, token_list_length: tokenListLength,
time_frame: timePeriod, time_frame: timePeriod,
search_token_address_input: filterString, search_token_address_input: filterString,
...@@ -463,7 +463,7 @@ export const LoadedRow = forwardRef((props: LoadedRowProps, ref: ForwardedRef<HT ...@@ -463,7 +463,7 @@ export const LoadedRow = forwardRef((props: LoadedRowProps, ref: ForwardedRef<HT
> >
<TokenRow <TokenRow
header={false} header={false}
listNumber={volumeRank} listNumber={sortRank}
tokenInfo={ tokenInfo={
<ClickableName> <ClickableName>
<QueryTokenLogo token={token} /> <QueryTokenLogo token={token} />
......
...@@ -77,7 +77,7 @@ function LoadingTokenTable({ rowCount = PAGE_SIZE }: { rowCount?: number }) { ...@@ -77,7 +77,7 @@ function LoadingTokenTable({ rowCount = PAGE_SIZE }: { rowCount?: number }) {
export default function TokenTable() { export default function TokenTable() {
const chainName = validateUrlChainParam(useParams<{ chainName?: string }>().chainName) const chainName = validateUrlChainParam(useParams<{ chainName?: string }>().chainName)
const { tokens, tokenVolumeRank, loadingTokens, sparklines } = useTopTokens(chainName) const { tokens, tokenSortRank, loadingTokens, sparklines } = useTopTokens(chainName)
/* loading and error state */ /* loading and error state */
if (loadingTokens && !tokens) { if (loadingTokens && !tokens) {
...@@ -109,7 +109,7 @@ export default function TokenTable() { ...@@ -109,7 +109,7 @@ export default function TokenTable() {
tokenListLength={tokens.length} tokenListLength={tokens.length}
token={token} token={token}
sparklineMap={sparklines} sparklineMap={sparklines}
volumeRank={tokenVolumeRank[token.address]} sortRank={tokenSortRank[token.address]}
/> />
) )
)} )}
......
...@@ -139,7 +139,7 @@ export type TopToken = NonNullable<NonNullable<TopTokens100Query>['topTokens']>[ ...@@ -139,7 +139,7 @@ export type TopToken = NonNullable<NonNullable<TopTokens100Query>['topTokens']>[
interface UseTopTokensReturnValue { interface UseTopTokensReturnValue {
tokens: TopToken[] | undefined tokens: TopToken[] | undefined
tokenVolumeRank: Record<string, number> tokenSortRank: Record<string, number>
loadingTokens: boolean loadingTokens: boolean
sparklines: SparklineMap sparklines: SparklineMap
} }
...@@ -172,26 +172,21 @@ export function useTopTokens(chain: Chain): UseTopTokensReturnValue { ...@@ -172,26 +172,21 @@ export function useTopTokens(chain: Chain): UseTopTokensReturnValue {
) )
const unwrappedTokens = useMemo(() => data?.topTokens?.map((token) => unwrapToken(chainId, token)), [chainId, data]) const unwrappedTokens = useMemo(() => data?.topTokens?.map((token) => unwrapToken(chainId, token)), [chainId, data])
const tokenVolumeRank = useMemo( const sortedTokens = useSortedTokens(unwrappedTokens)
const tokenSortRank = useMemo(
() => () =>
unwrappedTokens sortedTokens?.reduce((acc, cur, i) => {
?.sort((a, b) => { if (!cur.address) return acc
if (!a.market?.volume || !b.market?.volume) return 0 return {
return a.market.volume.value > b.market.volume.value ? -1 : 1 ...acc,
}) [cur.address]: i + 1,
.reduce((acc, cur, i) => { }
if (!cur.address) return acc }, {}) ?? {},
return { [sortedTokens]
...acc,
[cur.address]: i + 1,
}
}, {}) ?? {},
[unwrappedTokens]
) )
const filteredTokens = useFilteredTokens(unwrappedTokens) const filteredTokens = useFilteredTokens(sortedTokens)
const sortedTokens = useSortedTokens(filteredTokens)
return useMemo( return useMemo(
() => ({ tokens: sortedTokens, tokenVolumeRank, loadingTokens, sparklines }), () => ({ tokens: filteredTokens, tokenSortRank, loadingTokens, sparklines }),
[loadingTokens, tokenVolumeRank, sortedTokens, sparklines] [filteredTokens, tokenSortRank, loadingTokens, sparklines]
) )
} }
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