* feat(logs): add an infrastructure for fetching logs in a declarative way * use the logs hook in the vote page, first pass * fix comment * bit of cleanup * unused imports * improve loading indicator on vote page * some testnet behavior improvements * fix loader state * loading state nit * show correct indexes * remove the unnecessary retry code * first pass at the slice * no throws * loading indicator should go away if not connected * use the logs slice for the logs hook state * style changes per cal's request
90 lines
2.6 KiB
TypeScript
90 lines
2.6 KiB
TypeScript
import 'inter-ui'
|
|
import '@reach/dialog/styles.css'
|
|
import { createWeb3ReactRoot, Web3ReactProvider } from '@web3-react/core'
|
|
import { StrictMode } from 'react'
|
|
import { isMobile } from 'react-device-detect'
|
|
import ReactDOM from 'react-dom'
|
|
import ReactGA from 'react-ga'
|
|
import { Provider } from 'react-redux'
|
|
import { HashRouter } from 'react-router-dom'
|
|
import Blocklist from './components/Blocklist'
|
|
import { NetworkContextName } from './constants/misc'
|
|
import { LanguageProvider } from './i18n'
|
|
import App from './pages/App'
|
|
import store from './state'
|
|
import * as serviceWorkerRegistration from './serviceWorkerRegistration'
|
|
import ApplicationUpdater from './state/application/updater'
|
|
import ListsUpdater from './state/lists/updater'
|
|
import MulticallUpdater from './state/multicall/updater'
|
|
import LogsUpdater from './state/logs/updater'
|
|
import TransactionUpdater from './state/transactions/updater'
|
|
import UserUpdater from './state/user/updater'
|
|
import ThemeProvider, { ThemedGlobalStyle } from './theme'
|
|
import RadialGradientByChainUpdater from './theme/RadialGradientByChainUpdater'
|
|
import getLibrary from './utils/getLibrary'
|
|
|
|
const Web3ProviderNetwork = createWeb3ReactRoot(NetworkContextName)
|
|
|
|
if (!!window.ethereum) {
|
|
window.ethereum.autoRefreshOnNetworkChange = false
|
|
}
|
|
|
|
const GOOGLE_ANALYTICS_ID: string | undefined = process.env.REACT_APP_GOOGLE_ANALYTICS_ID
|
|
if (typeof GOOGLE_ANALYTICS_ID === 'string') {
|
|
ReactGA.initialize(GOOGLE_ANALYTICS_ID, {
|
|
gaOptions: {
|
|
storage: 'none',
|
|
storeGac: false,
|
|
},
|
|
})
|
|
ReactGA.set({
|
|
anonymizeIp: true,
|
|
customBrowserType: !isMobile
|
|
? 'desktop'
|
|
: 'web3' in window || 'ethereum' in window
|
|
? 'mobileWeb3'
|
|
: 'mobileRegular',
|
|
})
|
|
} else {
|
|
ReactGA.initialize('test', { testMode: true, debug: true })
|
|
}
|
|
|
|
function Updaters() {
|
|
return (
|
|
<>
|
|
<RadialGradientByChainUpdater />
|
|
<ListsUpdater />
|
|
<UserUpdater />
|
|
<ApplicationUpdater />
|
|
<TransactionUpdater />
|
|
<MulticallUpdater />
|
|
<LogsUpdater />
|
|
</>
|
|
)
|
|
}
|
|
|
|
ReactDOM.render(
|
|
<StrictMode>
|
|
<Provider store={store}>
|
|
<HashRouter>
|
|
<LanguageProvider>
|
|
<Web3ReactProvider getLibrary={getLibrary}>
|
|
<Web3ProviderNetwork getLibrary={getLibrary}>
|
|
<Blocklist>
|
|
<Updaters />
|
|
<ThemeProvider>
|
|
<ThemedGlobalStyle />
|
|
<App />
|
|
</ThemeProvider>
|
|
</Blocklist>
|
|
</Web3ProviderNetwork>
|
|
</Web3ReactProvider>
|
|
</LanguageProvider>
|
|
</HashRouter>
|
|
</Provider>
|
|
</StrictMode>,
|
|
document.getElementById('root')
|
|
)
|
|
|
|
serviceWorkerRegistration.unregister()
|