Skip to content

Commit

Permalink
fix(wallet): workaround the ethers bug to fix other wallets
Browse files Browse the repository at this point in the history
  • Loading branch information
moodysalem committed May 6, 2021
1 parent 81af31e commit 021aab6
Showing 1 changed file with 16 additions and 12 deletions.
28 changes: 16 additions & 12 deletions src/utils/getLibrary.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down

1 comment on commit 021aab6

@vercel
Copy link

@vercel vercel bot commented on 021aab6 May 6, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.