@@ -74,15 +74,26 @@ function SearchModal({
7474
7575 const tokenComparator = useTokenComparator ( invertSearchOrder )
7676
77- const sortedTokens : Token [ ] = useMemo ( ( ) => {
77+ const filteredTokens : Token [ ] = useMemo ( ( ) => {
7878 if ( ! isTokenView ) return [ ]
79- return Object . values ( allTokens ) . sort ( tokenComparator )
80- } , [ allTokens , isTokenView , tokenComparator ] )
79+ return filterTokens ( Object . values ( allTokens ) , searchQuery )
80+ } , [ isTokenView , allTokens , searchQuery ] )
8181
82- const filteredTokens : Token [ ] = useMemo ( ( ) => {
82+ const filteredSortedTokens : Token [ ] = useMemo ( ( ) => {
8383 if ( ! isTokenView ) return [ ]
84- return filterTokens ( sortedTokens , searchQuery )
85- } , [ isTokenView , sortedTokens , searchQuery ] )
84+ const sorted = filteredTokens . sort ( tokenComparator )
85+ const symbolMatch = searchQuery
86+ . toLowerCase ( )
87+ . split ( / \s + / )
88+ . filter ( s => s . length > 0 )
89+ if ( symbolMatch . length > 1 ) return sorted
90+
91+ return [
92+ // sort any exact symbol matches first
93+ ...sorted . filter ( token => token . symbol . toLowerCase ( ) === symbolMatch [ 0 ] ) ,
94+ ...sorted . filter ( token => token . symbol . toLowerCase ( ) !== symbolMatch [ 0 ] )
95+ ]
96+ } , [ filteredTokens , isTokenView , searchQuery , tokenComparator ] )
8697
8798 function _onTokenSelect ( address : string ) {
8899 onTokenSelect ( address )
@@ -157,7 +168,7 @@ function SearchModal({
157168 placement = "bottom"
158169 >
159170 < SearchInput
160- type = { ' text' }
171+ type = " text"
161172 id = "token-search-input"
162173 placeholder = { t ( 'tokenSearchPlaceholder' ) }
163174 value = { searchQuery }
@@ -181,7 +192,7 @@ function SearchModal({
181192 < div style = { { width : '100%' , height : '1px' , backgroundColor : theme . bg2 } } />
182193 { isTokenView ? (
183194 < TokenList
184- tokens = { filteredTokens }
195+ tokens = { filteredSortedTokens }
185196 allTokenBalances = { allTokenBalances }
186197 onRemoveAddedToken = { removeTokenByAddress }
187198 onTokenSelect = { _onTokenSelect }
0 commit comments