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
ea8c7326
Unverified
Commit
ea8c7326
authored
Jun 17, 2022
by
Kaylee George
Committed by
GitHub
Jun 17, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: crash on HOP token search (#3904) (#3928)
fix: ensure token address is checksummed on construction
parent
dd5feaac
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
20 deletions
+29
-20
Tokens.ts
src/hooks/Tokens.ts
+9
-5
utils.ts
src/lib/hooks/useTokenList/utils.ts
+12
-8
wrappedTokenInfo.ts
src/state/lists/wrappedTokenInfo.ts
+8
-7
No files found.
src/hooks/Tokens.ts
View file @
ea8c7326
...
@@ -120,11 +120,15 @@ export function useSearchInactiveTokenLists(search: string | undefined, minResul
...
@@ -120,11 +120,15 @@ export function useSearchInactiveTokenLists(search: string | undefined, minResul
if
(
!
list
)
continue
if
(
!
list
)
continue
for
(
const
tokenInfo
of
list
.
tokens
)
{
for
(
const
tokenInfo
of
list
.
tokens
)
{
if
(
tokenInfo
.
chainId
===
chainId
&&
tokenFilter
(
tokenInfo
))
{
if
(
tokenInfo
.
chainId
===
chainId
&&
tokenFilter
(
tokenInfo
))
{
const
wrapped
:
WrappedTokenInfo
=
new
WrappedTokenInfo
(
tokenInfo
,
list
)
try
{
if
(
!
(
wrapped
.
address
in
activeTokens
)
&&
!
addressSet
[
wrapped
.
address
])
{
const
wrapped
:
WrappedTokenInfo
=
new
WrappedTokenInfo
(
tokenInfo
,
list
)
addressSet
[
wrapped
.
address
]
=
true
if
(
!
(
wrapped
.
address
in
activeTokens
)
&&
!
addressSet
[
wrapped
.
address
])
{
result
.
push
(
wrapped
)
addressSet
[
wrapped
.
address
]
=
true
if
(
result
.
length
>=
minResults
)
return
result
result
.
push
(
wrapped
)
if
(
result
.
length
>=
minResults
)
return
result
}
}
catch
{
continue
}
}
}
}
}
}
...
...
src/lib/hooks/useTokenList/utils.ts
View file @
ea8c7326
...
@@ -16,16 +16,20 @@ export function tokensToChainTokenMap(tokens: TokenList | TokenInfo[]): ChainTok
...
@@ -16,16 +16,20 @@ export function tokensToChainTokenMap(tokens: TokenList | TokenInfo[]): ChainTok
const
[
list
,
infos
]
=
Array
.
isArray
(
tokens
)
?
[
undefined
,
tokens
]
:
[
tokens
,
tokens
.
tokens
]
const
[
list
,
infos
]
=
Array
.
isArray
(
tokens
)
?
[
undefined
,
tokens
]
:
[
tokens
,
tokens
.
tokens
]
const
map
=
infos
.
reduce
<
Mutable
<
ChainTokenMap
>>
((
map
,
info
)
=>
{
const
map
=
infos
.
reduce
<
Mutable
<
ChainTokenMap
>>
((
map
,
info
)
=>
{
const
token
=
new
WrappedTokenInfo
(
info
,
list
)
try
{
if
(
map
[
token
.
chainId
]?.[
token
.
address
]
!==
undefined
)
{
const
token
=
new
WrappedTokenInfo
(
info
,
list
)
console
.
warn
(
`Duplicate token skipped:
${
token
.
address
}
`
)
if
(
map
[
token
.
chainId
]?.[
token
.
address
]
!==
undefined
)
{
console
.
warn
(
`Duplicate token skipped:
${
token
.
address
}
`
)
return
map
}
if
(
!
map
[
token
.
chainId
])
{
map
[
token
.
chainId
]
=
{}
}
map
[
token
.
chainId
][
token
.
address
]
=
{
token
,
list
}
return
map
}
catch
{
return
map
return
map
}
}
if
(
!
map
[
token
.
chainId
])
{
map
[
token
.
chainId
]
=
{}
}
map
[
token
.
chainId
][
token
.
address
]
=
{
token
,
list
}
return
map
},
{})
as
ChainTokenMap
},
{})
as
ChainTokenMap
mapCache
?.
set
(
tokens
,
map
)
mapCache
?.
set
(
tokens
,
map
)
return
map
return
map
...
...
src/state/lists/wrappedTokenInfo.ts
View file @
ea8c7326
...
@@ -14,21 +14,22 @@ export class WrappedTokenInfo implements Token {
...
@@ -14,21 +14,22 @@ export class WrappedTokenInfo implements Token {
public
readonly
isNative
:
false
=
false
public
readonly
isNative
:
false
=
false
public
readonly
isToken
:
true
=
true
public
readonly
isToken
:
true
=
true
public
readonly
list
?:
TokenList
public
readonly
list
?:
TokenList
public
readonly
tokenInfo
:
TokenInfo
public
readonly
tokenInfo
:
TokenInfo
private
_checksummedAddress
:
string
constructor
(
tokenInfo
:
TokenInfo
,
list
?:
TokenList
)
{
constructor
(
tokenInfo
:
TokenInfo
,
list
?:
TokenList
)
{
this
.
tokenInfo
=
tokenInfo
this
.
tokenInfo
=
tokenInfo
this
.
list
=
list
this
.
list
=
list
const
checksummedAddress
=
isAddress
(
this
.
tokenInfo
.
address
)
if
(
!
checksummedAddress
)
{
throw
new
Error
(
`Invalid token address:
${
this
.
tokenInfo
.
address
}
`
)
}
this
.
_checksummedAddress
=
checksummedAddress
}
}
private
_checksummedAddress
:
string
|
null
=
null
public
get
address
():
string
{
public
get
address
():
string
{
if
(
this
.
_checksummedAddress
)
return
this
.
_checksummedAddress
return
this
.
_checksummedAddress
const
checksummedAddress
=
isAddress
(
this
.
tokenInfo
.
address
)
if
(
!
checksummedAddress
)
throw
new
Error
(
`Invalid token address:
${
this
.
tokenInfo
.
address
}
`
)
return
(
this
.
_checksummedAddress
=
checksummedAddress
)
}
}
public
get
chainId
():
number
{
public
get
chainId
():
number
{
...
...
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