Commit ecd71753 authored by Noah Zinsmeister's avatar Noah Zinsmeister Committed by GitHub

improve network connectivity (#441)

parent 0f20788c
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"@uniswap/sdk": "^1.0.0-beta.4", "@uniswap/sdk": "^1.0.0-beta.4",
"copy-to-clipboard": "^3.2.0", "copy-to-clipboard": "^3.2.0",
"escape-string-regexp": "^2.0.0", "escape-string-regexp": "^2.0.0",
"ethers": "^4.0.33", "ethers": "^4.0.36",
"i18next": "^15.0.9", "i18next": "^15.0.9",
"i18next-browser-languagedetector": "^3.0.1", "i18next-browser-languagedetector": "^3.0.1",
"i18next-xhr-backend": "^2.0.1", "i18next-xhr-backend": "^2.0.1",
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
"react-spring": "^8.0.20", "react-spring": "^8.0.20",
"react-switch": "^5.0.1", "react-switch": "^5.0.1",
"styled-components": "^4.2.0", "styled-components": "^4.2.0",
"web3-react": "^5.0.4" "web3-react": "5.0.5"
}, },
"scripts": { "scripts": {
"start": "react-scripts start", "start": "react-scripts start",
......
import { ethers } from 'ethers'
import { Connectors } from 'web3-react'
const { Connector } = Connectors
function getFallbackProvider(providerURL) {
const etherscan = new ethers.providers.EtherscanProvider()
const infura = new ethers.providers.JsonRpcProvider(providerURL)
const providers = [infura, etherscan]
return new ethers.providers.FallbackProvider(providers)
}
export default class NetworkOnlyConnector extends Connector {
constructor(kwargs) {
const { providerURL, ...rest } = kwargs || {}
super(rest)
this.providerURL = providerURL
}
async onActivation() {
if (!this.engine) {
const provider = getFallbackProvider(this.providerURL)
provider.polling = false
provider.pollingInterval = 300000 // 5 minutes
this.engine = provider
}
}
async getNetworkId(provider) {
const networkId = await provider.getNetwork().then(network => network.chainId)
return super._validateNetworkId(networkId)
}
async getProvider() {
return this.engine
}
async getAccount() {
return null
}
}
import React from 'react' import React from 'react'
import ReactDOM from 'react-dom' import ReactDOM from 'react-dom'
import ReactGA from 'react-ga' import ReactGA from 'react-ga'
import Web3Provider, { Connectors } from 'web3-react' import Web3Provider from 'web3-react'
import ThemeProvider, { GlobalStyle } from './theme' import ThemeProvider, { GlobalStyle } from './theme'
import LocalStorageContextProvider, { Updater as LocalStorageContextUpdater } from './contexts/LocalStorage' import LocalStorageContextProvider, { Updater as LocalStorageContextUpdater } from './contexts/LocalStorage'
...@@ -13,6 +13,7 @@ import AllowancesContextProvider from './contexts/Allowances' ...@@ -13,6 +13,7 @@ import AllowancesContextProvider from './contexts/Allowances'
import AllBalancesContextProvider from './contexts/AllBalances' import AllBalancesContextProvider from './contexts/AllBalances'
import App from './pages/App' import App from './pages/App'
import NetworkOnlyConnector from './NetworkOnlyConnector'
import InjectedConnector from './InjectedConnector' import InjectedConnector from './InjectedConnector'
import './i18n' import './i18n'
...@@ -24,9 +25,8 @@ if (process.env.NODE_ENV === 'production') { ...@@ -24,9 +25,8 @@ if (process.env.NODE_ENV === 'production') {
} }
ReactGA.pageview(window.location.pathname + window.location.search) ReactGA.pageview(window.location.pathname + window.location.search)
const { NetworkOnlyConnector } = Connectors
const Injected = new InjectedConnector({ supportedNetworks: [Number(process.env.REACT_APP_NETWORK_ID || '1')] })
const Network = new NetworkOnlyConnector({ providerURL: process.env.REACT_APP_NETWORK_URL || '' }) const Network = new NetworkOnlyConnector({ providerURL: process.env.REACT_APP_NETWORK_URL || '' })
const Injected = new InjectedConnector({ supportedNetworks: [Number(process.env.REACT_APP_NETWORK_ID || '1')] })
const connectors = { Injected, Network } const connectors = { Injected, Network }
function ContextProviders({ children }) { function ContextProviders({ children }) {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment