From 7557f0c7990e3815c37645fe5a3599db21823f31 Mon Sep 17 00:00:00 2001 From: Dario Gabriel Lipicar Date: Fri, 2 Jun 2023 17:07:42 -0300 Subject: [PATCH] feat(Wallet): add function to get erc20 token by contract address Part of #10251 --- services/wallet/token/token.go | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/services/wallet/token/token.go b/services/wallet/token/token.go index 9ba4804a5..95eb0d809 100644 --- a/services/wallet/token/token.go +++ b/services/wallet/token/token.go @@ -158,20 +158,26 @@ func (tm *Manager) fetchTokens() { tm.tokenMap = toTokenMap(tm.tokenList) } +func (tm *Manager) getFullTokenList(chainID uint64) []*Token { + tokens, err := tm.GetTokens(chainID) + if err != nil { + return nil + } + + customTokens, err := tm.GetCustomsByChainID(chainID) + if err != nil { + return nil + } + + return append(tokens, customTokens...) +} + func (tm *Manager) FindToken(network *params.Network, tokenSymbol string) *Token { if tokenSymbol == network.NativeCurrencySymbol { return tm.ToToken(network) } - tokens, err := tm.GetTokens(network.ChainID) - if err != nil { - return nil - } - customTokens, err := tm.GetCustomsByChainID(network.ChainID) - if err != nil { - return nil - } - allTokens := append(tokens, customTokens...) + allTokens := tm.getFullTokenList(network.ChainID) for _, token := range allTokens { if token.Symbol == tokenSymbol { return token @@ -180,6 +186,16 @@ func (tm *Manager) FindToken(network *params.Network, tokenSymbol string) *Token return nil } +func (tm *Manager) FindTokenByAddress(chainID uint64, address common.Address) *Token { + allTokens := tm.getFullTokenList(chainID) + for _, token := range allTokens { + if token.Address == address { + return token + } + } + return nil +} + func (tm *Manager) FindSNT(chainID uint64) *Token { tokens, err := tm.GetTokens(chainID) if err != nil {