Skip to content

Commit fe03041

Browse files
committed
improvement(pair search modal): show exact symbol match pairs first, filter before sorting
1 parent 4d5a433 commit fe03041

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

src/components/SearchModal/PairSearchModal.tsx

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,23 @@ function PairSearchModal({ history, isOpen, onDismiss }: PairSearchModalProps) {
5454
setSearchQuery(checksummedInput || input)
5555
}
5656

57+
const filteredPairs = useMemo(() => {
58+
return filterPairs(allPairs, searchQuery)
59+
}, [allPairs, searchQuery])
60+
5761
const sortedPairList = useMemo(() => {
58-
return allPairs.sort((a, b): number => {
62+
const query = searchQuery.toLowerCase()
63+
const queryMatches = (pair: Pair): boolean =>
64+
pair.token0.symbol.toLowerCase() === query || pair.token1.symbol.toLowerCase() === query
65+
return filteredPairs.sort((a, b): number => {
66+
const [aMatches, bMatches] = [queryMatches(a), queryMatches(b)]
67+
if (aMatches && !bMatches) return -1
68+
if (bMatches && !aMatches) return 1
5969
const balanceA = allPairBalances[a.liquidityToken.address]
6070
const balanceB = allPairBalances[b.liquidityToken.address]
6171
return pairComparator(a, b, balanceA, balanceB)
6272
})
63-
}, [allPairs, allPairBalances])
64-
65-
const filteredPairs = useMemo(() => {
66-
return filterPairs(sortedPairList, searchQuery)
67-
}, [searchQuery, sortedPairList])
73+
}, [searchQuery, filteredPairs, allPairBalances])
6874

6975
const selectPair = useCallback(
7076
(pair: Pair) => {
@@ -110,7 +116,7 @@ function PairSearchModal({ history, isOpen, onDismiss }: PairSearchModalProps) {
110116
</PaddedColumn>
111117
<div style={{ width: '100%', height: '1px', backgroundColor: theme.bg2 }} />
112118
<PairList
113-
pairs={filteredPairs}
119+
pairs={sortedPairList}
114120
focusTokenAddress={focusedToken?.address}
115121
onAddLiquidity={selectPair}
116122
onSelectPair={selectPair}

0 commit comments

Comments
 (0)