Skip to content
This repository was archived by the owner on Nov 10, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config/jest/Web3Mock.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Web3 from 'web3'

const window = global.window || {}
window.web3 = window.web3 || {}
window.web3 = {}
window.web3.currentProvider = new Web3.providers.HttpProvider('http://localhost:8545')

global.window = window
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,6 @@
"react-router-dom": "5.2.0",
"react-scripts": "^4.0.1",
"react-window": "^1.8.6",
"recompose": "^0.30.0",
"redux": "4.0.5",
"redux-actions": "^2.6.5",
"redux-thunk": "^2.3.0",
Expand Down
78 changes: 41 additions & 37 deletions src/components/AppLayout/Header/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import { Link } from 'react-router-dom'
import Provider from './Provider'

import Spacer from 'src/components/Spacer'
import openHoc from 'src/components/hoc/OpenHoc'
import Col from 'src/components/layout/Col'
import Img from 'src/components/layout/Img'
import Row from 'src/components/layout/Row'
import { border, headerHeight, md, screenSm, sm } from 'src/theme/variables'
import { useStateHandler } from 'src/logic/hooks/useStateHandler'

import SafeLogo from '../assets/gnosis-safe-multisig-logo.svg'

Expand Down Expand Up @@ -55,41 +55,45 @@ const styles = () => ({
},
})

const Layout = openHoc(({ classes, clickAway, open, providerDetails, providerInfo, toggle }) => (
<Row className={classes.summary}>
<Col className={classes.logo} middle="xs" start="xs">
<Link to="/">
<Img alt="Gnosis Team Safe" height={36} src={SafeLogo} testId="heading-gnosis-logo" />
</Link>
</Col>
<Spacer />
<Provider
info={providerInfo}
open={open}
toggle={toggle}
render={(providerRef) => (
<Popper
anchorEl={providerRef.current}
className={classes.popper}
open={open}
placement="bottom"
popperOptions={{ positionFixed: true }}
>
{({ TransitionProps }) => (
<Grow {...TransitionProps}>
<>
<ClickAwayListener mouseEvent="onClick" onClickAway={clickAway} touchEvent={false}>
<List className={classes.root} component="div">
{providerDetails}
</List>
</ClickAwayListener>
</>
</Grow>
)}
</Popper>
)}
/>
</Row>
))
const Layout = ({ classes, providerDetails, providerInfo }) => {
const { clickAway, open, toggle } = useStateHandler()

return (
<Row className={classes.summary}>
<Col className={classes.logo} middle="xs" start="xs">
<Link to="/">
<Img alt="Gnosis Team Safe" height={36} src={SafeLogo} testId="heading-gnosis-logo" />
</Link>
</Col>
<Spacer />
<Provider
info={providerInfo}
open={open}
toggle={toggle}
render={(providerRef) => (
<Popper
anchorEl={providerRef.current}
className={classes.popper}
open={open}
placement="bottom"
popperOptions={{ positionFixed: true }}
>
{({ TransitionProps }) => (
<Grow {...TransitionProps}>
<>
<ClickAwayListener mouseEvent="onClick" onClickAway={clickAway} touchEvent={false}>
<List className={classes.root} component="div">
{providerDetails}
</List>
</ClickAwayListener>
</>
</Grow>
)}
</Popper>
)}
/>
</Row>
)
}

export default withStyles(styles as any)(Layout)
6 changes: 0 additions & 6 deletions src/components/hoc/OpenHoc/index.tsx

This file was deleted.

3 changes: 3 additions & 0 deletions src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ import loadDefaultSafe from 'src/logic/safe/store/actions/loadDefaultSafe'
import loadSafesFromStorage from 'src/logic/safe/store/actions/loadSafesFromStorage'
import { store } from 'src/store'
import { SENTRY_DSN } from './utils/constants'
import { disableMMAutoRefreshWarning } from './utils/mm_warnings'

disableMMAutoRefreshWarning()

BigNumber.set({ EXPONENTIAL_AT: [-7, 255] })

Expand Down
4 changes: 4 additions & 0 deletions src/logic/contracts/generateBatchRequests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ const generateBatchRequests = <ReturnValues>({
if (type !== undefined) {
request = web3[type][method].request(...args, resolver)
} else {
if (address === null) {
resolve()
return
}
request = contractInstance.methods[method](...args).call.request(resolver)
}

Expand Down
17 changes: 17 additions & 0 deletions src/logic/hooks/useStateHandler.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { useState } from 'react'

type ReturnValue = {
open: boolean
toggle: () => void
clickAway: () => void
}

export const useStateHandler = (openInitialValue = false): ReturnValue => {
const [open, setOpen] = useState(openInitialValue)

return {
open,
toggle: () => setOpen((open) => !open),
clickAway: () => setOpen(false),
}
}
2 changes: 1 addition & 1 deletion src/logic/wallets/getWeb3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const httpProviderOptions = {
export const web3ReadOnly = new Web3(
process.env.NODE_ENV !== 'test'
? new Web3.providers.HttpProvider(getRpcServiceUrl(), httpProviderOptions)
: window.web3?.currentProvider || 'ws://localhost:8545',
: 'ws://localhost:8545',
)

let web3 = web3ReadOnly
Expand Down
5 changes: 1 addition & 4 deletions src/logic/wallets/store/middlewares/providerWatcher.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import closeSnackbar from 'src/logic/notifications/store/actions/closeSnackbar'
import { WALLET_PROVIDER, getProviderInfo, getWeb3 } from 'src/logic/wallets/getWeb3'
import { getProviderInfo, getWeb3 } from 'src/logic/wallets/getWeb3'
import { fetchProvider } from 'src/logic/wallets/store/actions'
import { ADD_PROVIDER } from 'src/logic/wallets/store/actions/addProvider'
import { REMOVE_PROVIDER } from 'src/logic/wallets/store/actions/removeProvider'
Expand Down Expand Up @@ -29,9 +29,6 @@ const providerWatcherMware = (store) => (next) => async (action) => {
clearInterval(watcherInterval)
}

if (currentProviderProps.name.toUpperCase() === WALLET_PROVIDER.METAMASK && (window as any).ethereum) {
;(window as any).ethereum.autoRefreshOnNetworkChange = false
}
saveToStorage(LAST_USED_PROVIDER_KEY, currentProviderProps.name)

watcherInterval = setInterval(async () => {
Expand Down
4 changes: 2 additions & 2 deletions src/test/utils/accounts.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
//
function useTestAccountAt(index = 0) {
(window as any).testAccountIndex = index
window.testAccountIndex = index
}

function resetTestAccount() {
delete (window as any).testAccountIndex
delete window.testAccountIndex
}

export { useTestAccountAt, resetTestAccount }
9 changes: 6 additions & 3 deletions src/types/definitions.d.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import Web3 from 'web3'
export {}
Copy link
Contributor

Choose a reason for hiding this comment

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

🤯

declare global {
interface Window {
web3?: Web3
testAccountIndex?: string
ethereum?: {
autoRefreshOnNetworkChange: boolean
isMetaMask: boolean
}
testAccountIndex?: string | number
}
}
declare module '@openzeppelin/contracts/build/contracts/ERC721'
Expand Down
6 changes: 6 additions & 0 deletions src/utils/mm_warnings.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// https://docs.metamask.io/guide/ethereum-provider.html#ethereum-autorefreshonnetworkchange
export const disableMMAutoRefreshWarning = (): void => {
if (window.ethereum && window.ethereum.isMetaMask) {
window.ethereum.autoRefreshOnNetworkChange = false
}
}
Loading