fix(wallet): workaround the ethers bug to fix other wallets
This commit is contained in:
parent
81af31eec1
commit
021aab6547
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user