diff --git a/src/routes/eth.route.js b/src/routes/eth.route.js index 77619ef..452bcc3 100644 --- a/src/routes/eth.route.js +++ b/src/routes/eth.route.js @@ -39,7 +39,7 @@ router.post('/balances', async (req, res) => { } let tokenAddressList if (paramData.tokenAddressList) { - tokenAddressList = paramData.tokenAddressList.split(separator) + tokenAddressList = JSON.parse(paramData.tokenAddressList) } debug(tokenAddressList) @@ -47,8 +47,8 @@ router.post('/balances', async (req, res) => { balances.ETH = await eth.getETHBalance(wallet, privateKey) try { Promise.all( - tokenAddressList.map(async (key) => - balances[key] = await eth.getERC20Balance(wallet, key) + Object.keys(tokenAddressList).map(async (key, index) => + balances[key] = await eth.getERC20Balance(wallet, key, tokenAddressList[key]) )).then(() => { res.status(200).json({ network: eth.network, @@ -94,14 +94,14 @@ router.post('/allowances', async (req, res) => { } let tokenAddressList if (paramData.tokenAddressList) { - tokenAddressList = paramData.tokenAddressList.split(separator) + tokenAddressList = JSON.parse(paramData.tokenAddressList) } const approvals = {} try { Promise.all( - tokenAddressList.map(async (key) => - approvals[key] = await eth.getERC20Allowance(wallet, spender, key) + Object.keys(tokenAddressList).map(async (key, index) => + approvals[key] = await eth.getERC20Allowance(wallet, spender, key, tokenAddressList[key]) )).then(() => { res.status(200).json({ network: eth.network, diff --git a/src/services/eth.js b/src/services/eth.js index 50cdede..b91b420 100644 --- a/src/services/eth.js +++ b/src/services/eth.js @@ -37,12 +37,12 @@ export default class Ethereum { } // get ERC-20 token balance - async getERC20Balance (wallet, tokenAddress) { + async getERC20Balance (wallet, tokenAddress, decimals) { // instantiate a contract and pass in provider for read-only access const contract = new ethers.Contract(tokenAddress, abi.ERC20Abi, this.provider) try { const balance = await contract.balanceOf(wallet.address) - return balance / 1e18.toString() + return balance / Math.pow(10, decimals).toString() } catch (err) { let reason err.reason ? reason = err.reason : reason = 'error balance lookup' @@ -51,12 +51,12 @@ export default class Ethereum { } // get ERC-20 token allowance - async getERC20Allowance (wallet, spender, tokenAddress) { + async getERC20Allowance (wallet, spender, tokenAddress, decimals) { // instantiate a contract and pass in provider for read-only access const contract = new ethers.Contract(tokenAddress, abi.ERC20Abi, this.provider) try { const allowance = await contract.allowance(wallet.address, spender) - return allowance / 1e18.toString() + return allowance / Math.pow(10, decimals).toString() } catch (err) { let reason err.reason ? reason = err.reason : reason = 'error allowance lookup'