Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
interface
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
LuckySwap
interface
Commits
740db0fe
Unverified
Commit
740db0fe
authored
Oct 17, 2023
by
eddie
Committed by
GitHub
Oct 17, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: merge portfolio tokens w/ default token list in Currency Selector (#7479)
parent
ed6afb50
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
32 deletions
+52
-32
CurrencySearch.tsx
src/components/SearchModal/CurrencySearch.tsx
+52
-32
No files found.
src/components/SearchModal/CurrencySearch.tsx
View file @
740db0fe
// eslint-disable-next-line no-restricted-imports
// eslint-disable-next-line no-restricted-imports
import
{
t
,
Trans
}
from
'
@lingui/macro
'
import
{
t
,
Trans
}
from
'
@lingui/macro
'
import
{
InterfaceEventName
,
InterfaceModalName
}
from
'
@uniswap/analytics-events
'
import
{
InterfaceEventName
,
InterfaceModalName
}
from
'
@uniswap/analytics-events
'
import
{
Currency
,
Token
}
from
'
@uniswap/sdk-core
'
import
{
C
hainId
,
C
urrency
,
Token
}
from
'
@uniswap/sdk-core
'
import
{
useWeb3React
}
from
'
@web3-react/core
'
import
{
useWeb3React
}
from
'
@web3-react/core
'
import
{
Trace
}
from
'
analytics
'
import
{
Trace
}
from
'
analytics
'
import
{
useCachedPortfolioBalancesQuery
}
from
'
components/PrefetchBalancesWrapper/PrefetchBalancesWrapper
'
import
{
useCachedPortfolioBalancesQuery
}
from
'
components/PrefetchBalancesWrapper/PrefetchBalancesWrapper
'
...
@@ -76,9 +76,6 @@ export function CurrencySearch({
...
@@ -76,9 +76,6 @@ export function CurrencySearch({
const
searchTokenIsAdded
=
useIsUserAddedToken
(
searchToken
)
const
searchTokenIsAdded
=
useIsUserAddedToken
(
searchToken
)
const
defaultTokens
=
useDefaultActiveTokens
(
chainId
)
const
defaultTokens
=
useDefaultActiveTokens
(
chainId
)
const
filteredTokens
:
Token
[]
=
useMemo
(()
=>
{
return
Object
.
values
(
defaultTokens
).
filter
(
getTokenFilter
(
debouncedQuery
))
},
[
defaultTokens
,
debouncedQuery
])
const
{
data
,
loading
:
balancesAreLoading
}
=
useCachedPortfolioBalancesQuery
({
account
})
const
{
data
,
loading
:
balancesAreLoading
}
=
useCachedPortfolioBalancesQuery
({
account
})
const
balances
:
TokenBalances
=
useMemo
(()
=>
{
const
balances
:
TokenBalances
=
useMemo
(()
=>
{
...
@@ -100,34 +97,57 @@ export function CurrencySearch({
...
@@ -100,34 +97,57 @@ export function CurrencySearch({
)
)
},
[
chainId
,
data
?.
portfolios
])
},
[
chainId
,
data
?.
portfolios
])
const
sortedTokens
:
Token
[]
=
useMemo
(
const
sortedTokens
:
Token
[]
=
useMemo
(()
=>
{
()
=>
const
portfolioTokens
=
data
?.
portfolios
?.[
0
].
tokenBalances
!
balancesAreLoading
?.
map
((
tokenBalance
)
=>
{
?
filteredTokens
if
(
!
tokenBalance
?.
token
?.
chain
||
!
tokenBalance
.
token
?.
address
||
!
tokenBalance
.
token
?.
decimals
)
{
.
filter
((
token
)
=>
{
return
undefined
if
(
onlyShowCurrenciesWithBalance
)
{
}
return
balances
[
token
.
address
?.
toLowerCase
()]?.
usdValue
>
0
return
new
Token
(
}
supportedChainIdFromGQLChain
(
tokenBalance
.
token
?.
chain
)
??
ChainId
.
MAINNET
,
tokenBalance
.
token
?.
address
,
tokenBalance
.
token
?.
decimals
,
tokenBalance
.
token
?.
symbol
,
tokenBalance
.
token
?.
name
)
})
.
filter
((
token
)
=>
!!
token
)
as
Token
[]
const
filteredTokens
=
Object
.
values
(
defaultTokens
)
.
filter
(
getTokenFilter
(
debouncedQuery
))
// Filter out tokens with balances so they aren't duplicated when we merge below.
.
filter
((
token
)
=>
!
(
token
.
address
?.
toLowerCase
()
in
balances
))
const
mergedTokens
=
[...(
portfolioTokens
??
[]),
...
filteredTokens
]
if
(
balancesAreLoading
)
{
return
mergedTokens
}
return
mergedTokens
.
filter
((
token
)
=>
{
if
(
onlyShowCurrenciesWithBalance
)
{
return
balances
[
token
.
address
?.
toLowerCase
()]?.
usdValue
>
0
}
// If there is no query, filter out unselected user-added tokens with no balance.
if
(
!
debouncedQuery
&&
token
instanceof
UserAddedToken
)
{
if
(
selectedCurrency
?.
equals
(
token
)
||
otherSelectedCurrency
?.
equals
(
token
))
return
true
return
balances
[
token
.
address
.
toLowerCase
()]?.
usdValue
>
0
}
return
true
})
.
sort
(
tokenComparator
.
bind
(
null
,
balances
))
},
[
data
,
defaultTokens
,
debouncedQuery
,
balancesAreLoading
,
balances
,
onlyShowCurrenciesWithBalance
,
selectedCurrency
,
otherSelectedCurrency
,
])
// If there is no query, filter out unselected user-added tokens with no balance.
if
(
!
debouncedQuery
&&
token
instanceof
UserAddedToken
)
{
if
(
selectedCurrency
?.
equals
(
token
)
||
otherSelectedCurrency
?.
equals
(
token
))
return
true
return
balances
[
token
.
address
.
toLowerCase
()]?.
usdValue
>
0
}
return
true
})
.
sort
(
tokenComparator
.
bind
(
null
,
balances
))
:
filteredTokens
,
[
balancesAreLoading
,
filteredTokens
,
balances
,
onlyShowCurrenciesWithBalance
,
debouncedQuery
,
selectedCurrency
,
otherSelectedCurrency
,
]
)
const
isLoading
=
Boolean
(
balancesAreLoading
&&
!
tokenLoaderTimerElapsed
)
const
isLoading
=
Boolean
(
balancesAreLoading
&&
!
tokenLoaderTimerElapsed
)
const
filteredSortedTokens
=
useSortTokensByQuery
(
debouncedQuery
,
sortedTokens
)
const
filteredSortedTokens
=
useSortTokensByQuery
(
debouncedQuery
,
sortedTokens
)
...
@@ -205,7 +225,7 @@ export function CurrencySearch({
...
@@ -205,7 +225,7 @@ export function CurrencySearch({
// if no results on main list, show option to expand into inactive
// if no results on main list, show option to expand into inactive
const
filteredInactiveTokens
=
useSearchInactiveTokenLists
(
const
filteredInactiveTokens
=
useSearchInactiveTokenLists
(
!
onlyShowCurrenciesWithBalance
&&
(
filter
edTokens
.
length
===
0
||
(
debouncedQuery
.
length
>
2
&&
!
isAddressSearch
))
!
onlyShowCurrenciesWithBalance
&&
(
sort
edTokens
.
length
===
0
||
(
debouncedQuery
.
length
>
2
&&
!
isAddressSearch
))
?
debouncedQuery
?
debouncedQuery
:
undefined
:
undefined
)
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment