Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: replace @metamask/ethjs-{contract,query} packages with @ethersproject for EIP1193 compatibility #155

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions lib/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const { PollingBlockTracker } = require('@metamask/eth-block-tracker')
const Eth = require('@metamask/ethjs-query')
const EthContract = require('@metamask/ethjs-contract')
const { Web3Provider } = require('@ethersproject/providers')
const { Contract } = require('@ethersproject/contracts')
const Token = require('./token')
const abi = require('human-standard-token-abi')
const SafeEventEmitter = require('@metamask/safe-event-emitter').default
Expand All @@ -19,9 +19,7 @@ class TokenTracker extends SafeEventEmitter {
pollingInterval,
})

const eth = new Eth(opts.provider)
const contract = new EthContract(eth)
this.TokenContract = contract(abi)
this.provider = opts.provider

const tokens = opts.tokens || []
this.balanceDecimals = opts.balanceDecimals
Expand Down Expand Up @@ -52,6 +50,14 @@ class TokenTracker extends SafeEventEmitter {
return this.tokens.map(token => token.serialize())
}

getContractAtAddress(tokenAddress) {
return new Contract(
tokenAddress,
abi,
new Web3Provider(this.provider),
)
}

async updateBalances() {
try {
await Promise.all(this.tokens.map((token) => {
Expand All @@ -68,7 +74,7 @@ class TokenTracker extends SafeEventEmitter {
createTokenFrom (opts, balanceDecimals) {
const owner = this.userAddress
const { address, symbol, balance, decimals } = opts
const contract = this.TokenContract.at(address)
const contract = this.getContractAtAddress(address)
return new Token({
address,
symbol,
Expand Down
6 changes: 5 additions & 1 deletion lib/token.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const BN = require('bn.js')
const { BigNumber } = require("@ethersproject/bignumber")
const util = require('./util')

/**
Expand Down Expand Up @@ -137,7 +138,10 @@ class Token {
}

if (result) {
const val = result[0]
let val = result
if (BigNumber.isBigNumber(result)) {
val = new BN(result.toString())
}
this[key] = val
return val
}
Expand Down
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@
"/lib"
],
"dependencies": {
"@ethersproject/bignumber": "^5.7.0",
"@ethersproject/contracts": "^5.7.0",
"@ethersproject/providers": "^5.7.2",
"@metamask/eth-block-tracker": "^11.0.3",
"@metamask/ethjs-contract": "^0.4.1",
"@metamask/ethjs-query": "^0.7.1",
"@metamask/safe-event-emitter": "^3.0.0",
"bn.js": "^5.2.1",
"deep-equal": "^2.2.0",
Expand All @@ -55,6 +56,8 @@
"@lavamoat/allow-scripts": "^2.3.1",
"@lavamoat/preinstall-always-fail": "^2.0.0",
"@metamask/auto-changelog": "^3.4.3",
"@metamask/ethjs-contract": "^0.4.1",
"@metamask/ethjs-query": "^0.7.1",
"ganache": "7.3.1",
"solc": "^0.4.26",
"tape": "^5.6.1"
Expand Down
Loading
Loading