fix(wallet): workaround the ethers bug to fix other wallets

This commit is contained in:
Moody Salem 2021-05-06 11:10:45 -04:00
parent 81af31eec1
commit 021aab6547
No known key found for this signature in database
GPG Key ID: 8CB5CD10385138DB

@ -1,17 +1,21 @@
import { Web3Provider } from '@ethersproject/providers'
import { Web3ReactContextInterface } from '@web3-react/core/dist/types'
import { Web3Provider, Network } from '@ethersproject/providers'
export default function getLibrary(
provider: any,
connector?: Required<Web3ReactContextInterface>['connector']
): Web3Provider {
// todo: need to add types to this function and fix the issue with latest version of ethers not able to detect network if we pass in 'any'
const chainId =
provider?.chainId ?? connector?.supportedChainIds?.length === 1 ? connector?.supportedChainIds?.[0] : undefined
// latest ethers version tries to detect the network which fails
const library = new Web3Provider(
class WorkaroundWeb3Provider extends Web3Provider {
private _detectNetworkResult: Promise<Network> | null = null
async detectNetwork(): Promise<Network> {
return this._detectNetworkResult ?? (this._detectNetworkResult = this._uncachedDetectNetwork())
}
}
export default function getLibrary(provider: any): Web3Provider {
const library = new WorkaroundWeb3Provider(
provider,
typeof chainId === 'number' ? chainId : typeof chainId === 'string' ? parseInt(chainId) : 'any'
typeof provider.chainId === 'number'
? provider.chainId
: typeof provider.chainId === 'string'
? parseInt(provider.chainId)
: 'any'
)
library.pollingInterval = 15000
return library