From 25fb5cbc8b1aeaa78f9b8130770a8b5fc3d6b0b0 Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Tue, 29 Jun 2021 15:10:39 +0200 Subject: [PATCH 1/7] fix: user get balance style: update documentation style: follow commitlint convension fix: releasing process error --- .yarn/versions/9d88b67e.yml | 2 ++ .../src/natural-erc20/getMetadata.js | 18 ++++-------------- .../nep141-erc20/src/natural-erc20/index.js | 1 + 3 files changed, 7 insertions(+), 14 deletions(-) create mode 100644 .yarn/versions/9d88b67e.yml diff --git a/.yarn/versions/9d88b67e.yml b/.yarn/versions/9d88b67e.yml new file mode 100644 index 00000000..0b96f2e4 --- /dev/null +++ b/.yarn/versions/9d88b67e.yml @@ -0,0 +1,2 @@ +releases: + "@near-eth/nep141-erc20": patch diff --git a/packages/nep141-erc20/src/natural-erc20/getMetadata.js b/packages/nep141-erc20/src/natural-erc20/getMetadata.js index 1dbc934c..74ce5754 100644 --- a/packages/nep141-erc20/src/natural-erc20/getMetadata.js +++ b/packages/nep141-erc20/src/natural-erc20/getMetadata.js @@ -2,7 +2,7 @@ import Web3 from 'web3' import getName from './getName' import { getEthProvider } from '@near-eth/client/dist/utils' -async function getBalance (address, user) { +export async function getBalance (address, user) { if (!user) return null const web3 = new Web3(getEthProvider()) @@ -56,27 +56,17 @@ async function getIcon (address) { /** * Fetch name, icon, and decimals (precision) of ERC20 token with given `address`. - * - * Can provide an Ethereum wallet address as second argument, in which case that - * wallet's balance will also be returned. If omitted, `balance` is returned as `null`. - * - * Values other than `balance` are cached. - * * @param address ERC20 token contract address - * @param user (optional) Ethereum wallet address that may hold tokens with given `address` - * - * @returns {Promise<{ address: string, balance: number|null, decimals: number, icon: string|null, name: string }>} + * @returns {Promise<{ address: string, decimals: number, icon: string|null, name: string }>} */ -export default async function getErc20Data (address, user) { - const [balance, decimals, icon, name] = await Promise.all([ - getBalance(address, user), +export default async function getErc20Data (address) { + const [decimals, icon, name] = await Promise.all([ getDecimals(address), getIcon(address), getName(address) ]) return { address, - balance, decimals, icon, name diff --git a/packages/nep141-erc20/src/natural-erc20/index.js b/packages/nep141-erc20/src/natural-erc20/index.js index 240607c2..e95d5dc9 100644 --- a/packages/nep141-erc20/src/natural-erc20/index.js +++ b/packages/nep141-erc20/src/natural-erc20/index.js @@ -1,3 +1,4 @@ +export { getBalance } from './getMetadata' export { default as getMetadata } from './getMetadata' export { default as getAllowance } from './getAllowance' export { default as getName } from './getName' From 761bb0a557bca356d75cd582a2d0b37c9831aaa6 Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Thu, 1 Jul 2021 14:45:44 +0200 Subject: [PATCH 2/7] fix: yarn version check --- .yarn/versions/9d88b67e.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.yarn/versions/9d88b67e.yml b/.yarn/versions/9d88b67e.yml index 0b96f2e4..cf0d2154 100644 --- a/.yarn/versions/9d88b67e.yml +++ b/.yarn/versions/9d88b67e.yml @@ -1,2 +1,5 @@ releases: "@near-eth/nep141-erc20": patch + +undecided: + - rainbow-bridge-client-monorepo From 942ebee177e426c597f9c4c24d9d6d633876956f Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Thu, 1 Jul 2021 14:47:49 +0200 Subject: [PATCH 3/7] fix: yarn version check for the mono repo workspace --- .yarn/versions/9d88b67e.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.yarn/versions/9d88b67e.yml b/.yarn/versions/9d88b67e.yml index cf0d2154..9bfedb73 100644 --- a/.yarn/versions/9d88b67e.yml +++ b/.yarn/versions/9d88b67e.yml @@ -1,5 +1,3 @@ releases: "@near-eth/nep141-erc20": patch - -undecided: - - rainbow-bridge-client-monorepo + rainbow-bridge-client-monorepo: patch From 7e9b4b298d6e19fb6d5513b4b0fe0e8fe92e6726 Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Thu, 1 Jul 2021 17:23:12 +0200 Subject: [PATCH 4/7] refactor: getBalance --- .yarn/versions/9d88b67e.yml | 6 ++--- .../src/natural-erc20/getBalance.js | 15 +++++++++++++ .../src/natural-erc20/getMetadata.js | 22 ++++++++++++------- .../nep141-erc20/src/natural-erc20/getName.js | 2 +- .../nep141-erc20/src/natural-erc20/index.js | 2 +- packages/nep141-erc20/tsconfig.json | 2 +- 6 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 packages/nep141-erc20/src/natural-erc20/getBalance.js diff --git a/.yarn/versions/9d88b67e.yml b/.yarn/versions/9d88b67e.yml index 9bfedb73..69205ebc 100644 --- a/.yarn/versions/9d88b67e.yml +++ b/.yarn/versions/9d88b67e.yml @@ -1,3 +1,3 @@ -releases: - "@near-eth/nep141-erc20": patch - rainbow-bridge-client-monorepo: patch +undecided: + - rainbow-bridge-client-monorepo + - "@near-eth/nep141-erc20" diff --git a/packages/nep141-erc20/src/natural-erc20/getBalance.js b/packages/nep141-erc20/src/natural-erc20/getBalance.js new file mode 100644 index 00000000..86251a3d --- /dev/null +++ b/packages/nep141-erc20/src/natural-erc20/getBalance.js @@ -0,0 +1,15 @@ +import Web3 from 'web3' +import { getEthProvider } from '@near-eth/client/dist/utils' + +export default async function getBalance (address, user) { + if (!user) return null + + const web3 = new Web3(getEthProvider()) + + const erc20Contract = new web3.eth.Contract( + JSON.parse(process.env.ethErc20AbiText), + address + ) + + return await erc20Contract.methods.balanceOf(user).call() +} diff --git a/packages/nep141-erc20/src/natural-erc20/getMetadata.js b/packages/nep141-erc20/src/natural-erc20/getMetadata.js index 74ce5754..3053018f 100644 --- a/packages/nep141-erc20/src/natural-erc20/getMetadata.js +++ b/packages/nep141-erc20/src/natural-erc20/getMetadata.js @@ -2,17 +2,21 @@ import Web3 from 'web3' import getName from './getName' import { getEthProvider } from '@near-eth/client/dist/utils' -export async function getBalance (address, user) { - if (!user) return null +const erc20Symbols = {} +export async function getSymbol (address) { + if (erc20Symbols[address]) return erc20Symbols[address] const web3 = new Web3(getEthProvider()) - const erc20Contract = new web3.eth.Contract( + const contract = new web3.eth.Contract( JSON.parse(process.env.ethErc20AbiText), address ) - return await erc20Contract.methods.balanceOf(user).call() + erc20Symbols[address] = await contract.methods.symbol().call() + .catch(() => address.slice(0, 5) + '…') + + return erc20Symbols[address] } const erc20Decimals = {} @@ -59,16 +63,18 @@ async function getIcon (address) { * @param address ERC20 token contract address * @returns {Promise<{ address: string, decimals: number, icon: string|null, name: string }>} */ -export default async function getErc20Data (address) { - const [decimals, icon, name] = await Promise.all([ +export default async function getMetadata (address) { + const [decimals, icon, name, symbol] = await Promise.all([ getDecimals(address), getIcon(address), - getName(address) + getName(address), + getSymbol(address) ]) return { address, decimals, icon, - name + name, + symbol } } diff --git a/packages/nep141-erc20/src/natural-erc20/getName.js b/packages/nep141-erc20/src/natural-erc20/getName.js index 71b85a04..21d7366b 100644 --- a/packages/nep141-erc20/src/natural-erc20/getName.js +++ b/packages/nep141-erc20/src/natural-erc20/getName.js @@ -12,7 +12,7 @@ export default async function getName (address) { address ) - erc20Names[address] = await contract.methods.symbol().call() + erc20Names[address] = await contract.methods.name().call() .catch(() => address.slice(0, 5) + '…') return erc20Names[address] diff --git a/packages/nep141-erc20/src/natural-erc20/index.js b/packages/nep141-erc20/src/natural-erc20/index.js index e95d5dc9..cc866467 100644 --- a/packages/nep141-erc20/src/natural-erc20/index.js +++ b/packages/nep141-erc20/src/natural-erc20/index.js @@ -1,4 +1,4 @@ -export { getBalance } from './getMetadata' +export { getBalance } from './getBalance' export { default as getMetadata } from './getMetadata' export { default as getAllowance } from './getAllowance' export { default as getName } from './getName' diff --git a/packages/nep141-erc20/tsconfig.json b/packages/nep141-erc20/tsconfig.json index dd7fa2b2..0b9189fe 100644 --- a/packages/nep141-erc20/tsconfig.json +++ b/packages/nep141-erc20/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../../tsconfig.json", - "include": ["src/*"], + "include": ["src/*", "src/natural-erc20/getBalance.js"], "compilerOptions": { "allowJs": true, /* Allow javascript files to be compiled. */ "outDir": "./dist/" From 2d5123afa1c2ae008baf222ca864a540430f2bb4 Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Thu, 1 Jul 2021 17:27:26 +0200 Subject: [PATCH 5/7] fix: release strategy error --- .yarn/versions/9d88b67e.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.yarn/versions/9d88b67e.yml b/.yarn/versions/9d88b67e.yml index 69205ebc..9bfedb73 100644 --- a/.yarn/versions/9d88b67e.yml +++ b/.yarn/versions/9d88b67e.yml @@ -1,3 +1,3 @@ -undecided: - - rainbow-bridge-client-monorepo - - "@near-eth/nep141-erc20" +releases: + "@near-eth/nep141-erc20": patch + rainbow-bridge-client-monorepo: patch From c3637a918b3abfe2b349baa250cd77856dec4f3e Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Wed, 21 Jul 2021 13:30:19 +0200 Subject: [PATCH 6/7] fix: lint errors --- packages/nep141-erc20/src/natural-erc20/getMetadata.js | 9 +++++---- packages/nep141-erc20/src/natural-erc20/getName.js | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/nep141-erc20/src/natural-erc20/getMetadata.js b/packages/nep141-erc20/src/natural-erc20/getMetadata.js index 5c49f3f1..d836f886 100644 --- a/packages/nep141-erc20/src/natural-erc20/getMetadata.js +++ b/packages/nep141-erc20/src/natural-erc20/getMetadata.js @@ -7,12 +7,13 @@ export async function getSymbol (address) { if (erc20Symbols[address]) return erc20Symbols[address] const provider = getEthProvider() - const contract = new web3.eth.Contract( - JSON.parse(process.env.ethErc20AbiText), - address + const contract = new ethers.Contract( + address, + process.env.ethErc20AbiText, + provider ) - erc20Symbols[address] = await contract.methods.symbol().call() + erc20Symbols[address] = await contract.symbol() .catch(() => address.slice(0, 5) + '…') return erc20Symbols[address] diff --git a/packages/nep141-erc20/src/natural-erc20/getName.js b/packages/nep141-erc20/src/natural-erc20/getName.js index 5d147ae9..d611747c 100644 --- a/packages/nep141-erc20/src/natural-erc20/getName.js +++ b/packages/nep141-erc20/src/natural-erc20/getName.js @@ -18,6 +18,5 @@ export default async function getName (address) { console.log(`Failed to read token symbol for: ${address}`) erc20Names[address] = address.slice(0, 5) + '…' } - return erc20Names[address] } From 0d14a0b422402f818b31ca4ca21fb2a2fdfa5c67 Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Wed, 21 Jul 2021 13:42:51 +0200 Subject: [PATCH 7/7] fix: uethers in nep-141-erc20 --- .../nep141-erc20/src/natural-erc20/getAllowance.js | 4 ++-- .../nep141-erc20/src/natural-erc20/getBalance.js | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/nep141-erc20/src/natural-erc20/getAllowance.js b/packages/nep141-erc20/src/natural-erc20/getAllowance.js index f331e8d4..2c820989 100644 --- a/packages/nep141-erc20/src/natural-erc20/getAllowance.js +++ b/packages/nep141-erc20/src/natural-erc20/getAllowance.js @@ -12,11 +12,11 @@ export default async function getAllowance ({ erc20Address, owner, spender }) { const provider = getEthProvider() - const erc20Contract = new ethers.Contract( + const contract = new ethers.Contract( erc20Address, process.env.ethErc20AbiText, provider ) - return (await erc20Contract.allowance(owner, spender)).toString() + return (await contract.allowance(owner, spender)).toString() } diff --git a/packages/nep141-erc20/src/natural-erc20/getBalance.js b/packages/nep141-erc20/src/natural-erc20/getBalance.js index 86251a3d..0217af99 100644 --- a/packages/nep141-erc20/src/natural-erc20/getBalance.js +++ b/packages/nep141-erc20/src/natural-erc20/getBalance.js @@ -1,15 +1,16 @@ -import Web3 from 'web3' +import { ethers } from 'ethers' import { getEthProvider } from '@near-eth/client/dist/utils' export default async function getBalance (address, user) { if (!user) return null - const web3 = new Web3(getEthProvider()) + const provider = getEthProvider() - const erc20Contract = new web3.eth.Contract( - JSON.parse(process.env.ethErc20AbiText), - address + const contract = new ethers.Contract( + address, + process.env.ethErc20AbiText, + provider ) - return await erc20Contract.methods.balanceOf(user).call() + return await contract.balanceOf(user) }