Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
dd3b56f
change:
sk-enya Nov 16, 2022
0d413b6
updated sentry with app chain from ui selection
sk-enya Nov 16, 2022
a7215ef
seting up network state on changing the app chain
sk-enya Nov 16, 2022
1f3e4ad
change:
sk-enya Nov 16, 2022
7700f66
change
sk-enya Nov 17, 2022
2313337
updated sentry & fix linting issues.
sk-enya Nov 29, 2022
30388bc
change:
sk-enya Nov 29, 2022
4288a1f
change:
sk-enya Nov 30, 2022
a50be10
changing layer icons on switching network from networkSwitcher.
sk-enya Nov 30, 2022
3264212
change:
sk-enya Nov 30, 2022
5a18d6b
change:
sk-enya Nov 30, 2022
c68037e
bobaexplorer url fix for each network and layer.
sk-enya Nov 30, 2022
d7a6bd3
change: selected icons on networkList items along with check
sk-enya Nov 30, 2022
2670eef
updated icons for chains and remove unused IconComponent
sk-enya Nov 30, 2022
11eeaaf
fix for import
sk-enya Nov 30, 2022
0cfb65b
persist the earlier layer and connect on the same layer on new network
sk-enya Nov 30, 2022
114003f
remove consoles.
sk-enya Nov 30, 2022
620e921
change:
sk-enya Dec 1, 2022
e9451c4
change:
sk-enya Dec 1, 2022
6e27f8d
udpated icons for boba chains project listing.
sk-enya Dec 1, 2022
3c88130
reverted master config change
sk-enya Dec 1, 2022
524d0e5
change:
sk-enya Dec 5, 2022
7f6296d
console cleanup
sk-enya Dec 5, 2022
9a87023
partial: query param based network selection
sk-enya Dec 6, 2022
bd56494
change: add chain id's for other fantom, bnb, moonbeam
sk-enya Dec 7, 2022
d6a8a42
moved default values to constant files.
sk-enya Dec 7, 2022
c5e094b
fix for setting index routes on generated route config.
sk-enya Dec 8, 2022
e21cadd
add native token symbol and name to l1 config.
sk-enya Dec 8, 2022
068fc83
disable bridge page for now from other deployment.
sk-enya Dec 8, 2022
2e1061e
set network from useNetwork hook only in case of query param.
sk-enya Dec 8, 2022
c09c93a
[ Gateway ] One gateway sync alt l1 (#497)
sk-enya Jan 30, 2023
8357f6a
clean up etherscan fetch call
sk-enya Jan 31, 2023
2818488
removed l1 etherscan url
sk-enya Jan 31, 2023
d67efb5
fix for devtools
sk-enya Jan 31, 2023
b5a0a8f
crash fix for switch chain + labels on history tx list.
sk-enya Jan 31, 2023
a8ef570
remove console error
sk-enya Jan 31, 2023
17a926e
cleanup console
sk-enya Jan 31, 2023
dbae7f2
fetch boba feee choice only incase of L2
sk-enya Jan 31, 2023
e784c8c
cleanup unused vars.
sk-enya Jan 31, 2023
21edd4b
masterconfig cleanup with respective import
sk-enya Jan 31, 2023
989dcbc
- fix for supported alt l1 chains
sk-enya Jan 31, 2023
0a0a4a6
fix: earn page labels, boba chains broken, disable subgraph on goerli.
sk-enya Jan 31, 2023
ce9f2e7
fix: loading address only on initAccount phase to fix crash.
sk-enya Jan 31, 2023
da490f9
fix: verifier instance if url not found
sk-enya Jan 31, 2023
c35654d
wallet page crash fixes.
sk-enya Jan 31, 2023
4697078
invoking functions only when basedEnabled means connected to MM.
sk-enya Jan 31, 2023
cc0d9af
cleanup console
sk-enya Jan 31, 2023
9f08a6e
Added meta token to bnb testnet
sk-enya Feb 9, 2023
21fd326
[Gateway] : Gateway Version on footer of the page along with styling …
sk-enya Feb 10, 2023
a52b9c3
[Gateway] Fix: Style fixes component. (#581)
sk-enya Feb 13, 2023
d763021
Auto switching MM network (#605)
sk-enya Feb 27, 2023
25b68a3
Wavect/mockups: Design alignment (#595)
wavect-gmbh Mar 1, 2023
8448362
Fix [Gateway] : One gateway bridging (#589)
sk-enya Mar 2, 2023
bb59034
Merge branch 'develop' into feat/one-gateway
sk-enya Mar 2, 2023
055f54d
Merge branch 'develop' into feat/one-gateway
wsdt Mar 2, 2023
7e3e600
fast exit fixes (#619)
sk-enya Mar 2, 2023
e953514
Add wallet service and fix switchChain (#620)
boyuan-chen Mar 3, 2023
f5a533e
Support WalletConnect
boyuan-chen Mar 4, 2023
0f150ab
Merge branch 'develop' into feat/wallet-connect
boyuan-chen Mar 4, 2023
f0c0fd9
Merge branch 'develop' into feat/wallet-connect
sk-enya Mar 8, 2023
fbfd04d
Fix block explorer url
boyuan-chen Mar 8, 2023
61e6ca6
Merge branch 'develop' into feat/wallet-connect
boyuan-chen Mar 9, 2023
ecad104
Merge branch 'develop' into feat/wallet-connect
sk-enya Mar 10, 2023
47c0f7d
Add wallet auto connection (#647)
boyuan-chen Mar 10, 2023
7fdb644
Add REACT_APP_DISABLE_WALLETCONNECT flag (#656)
boyuan-chen Mar 14, 2023
ee62c70
Merge branch 'develop' into feat/wallet-connect
boyuan-chen Mar 14, 2023
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
6 changes: 6 additions & 0 deletions packages/boba/gateway/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,9 @@ REACT_APP_ZENDESK_KEY= ## KEY for the zendesk widget.
################
# to disable the veDoa set below flat to 1.
REACT_APP_DISABLE_VE_DAO=1

#####################
##### WebWallet #####
#####################
# to disable the walletConnect set below flat to 1.
REACT_APP_DISABLE_WALLETCONNECT=1
21 changes: 8 additions & 13 deletions packages/boba/gateway/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"@sentry/tracing": "^7.30.0",
"@typescript-eslint/eslint-plugin": "^5.10.2",
"@typescript-eslint/parser": "^5.10.2",
"@walletconnect/web3-provider": "^1.8.0",
"axios": "^0.21.1",
"bignumber.js": "^9.0.1",
"bn.js": "^5.1.3",
Expand Down Expand Up @@ -63,23 +64,17 @@
"serve": "^11.3.2",
"truncate-middle": "^1.0.6",
"ts-md5": "^1.2.11",
"typescript": "^4.3.5"
"typescript": "^4.3.5",
"web3": "^1.8.2"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"browserslist": [
">0.2%",
"not dead",
"not op_mini all"
],
"devDependencies": {
"@beam-australia/react-env": "2.1.2",
"audit-ci": "^3.1.1"
Expand Down
18 changes: 18 additions & 0 deletions packages/boba/gateway/src/actions/setupAction.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,21 @@ export function setConnect( state ) {
return dispatch({ type: 'SETUP/CONNECT', payload: state })
}
}

export function setWalletConnected( state ) {
return function (dispatch) {
return dispatch({ type: 'SETUP/WALLET_CONNECTED', payload: state })
}
}

export function setChainIdChanged(state) {
return function (dispatch) {
return dispatch({ type: 'SETUP/CHAINIDCHANGED/SET', payload: state })
}
}

export function resetChainIdChanged() {
return function (dispatch) {
return dispatch({ type: 'SETUP/CHAINIDCHANGED/RESET' })
}
}
6 changes: 6 additions & 0 deletions packages/boba/gateway/src/actions/tokenAction.js
Original file line number Diff line number Diff line change
Expand Up @@ -225,3 +225,9 @@ export async function addToken ( tokenContractAddressL1 ) {
return {currency: _tokenContractAddressL1, L1address: _tokenContractAddressL1, L2address: '', symbol: 'Not found', error: 'Not found'};
}
}

export function restTokenList () {
return function (dispatch) {
return dispatch({ type: 'TOKEN/GET/RESET' });
}
}
57 changes: 57 additions & 0 deletions packages/boba/gateway/src/components/disconnect/Disconnect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
Copyright 2021-present Boba Network.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */

import React from 'react';
import { useDispatch } from 'react-redux';
import { LoginOutlined } from '@mui/icons-material';
import { IconButton, Tooltip } from '@mui/material';

import {
setLayer,
setConnect,
setConnectBOBA,
setConnectETH,
setEnableAccount,
setWalletConnected
} from 'actions/setupAction';

import networkService from 'services/networkService';

function Disconnect () {

const dispatch = useDispatch();

const disconnect = async () => {
await networkService.walletService.disconnectWallet()
dispatch(setLayer(null))
dispatch(setConnect(false))
dispatch(setConnectBOBA(false))
dispatch(setConnectETH(false))
dispatch(setWalletConnected(false))
dispatch(setEnableAccount(false))
}

return (
<>
<Tooltip onClick={disconnect}>
<IconButton size='medium'>
<LoginOutlined sx={{ fontSize: 16 }} />
</IconButton>
</Tooltip>
</>
);
}

export default React.memo(Disconnect);
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
IconButton,
} from '@mui/material'
import { useTheme } from '@mui/styles'
import { setConnect, setConnectBOBA, setConnectETH, setLayer } from 'actions/setupAction.js'
import { setConnect, setWalletConnected, setConnectBOBA, setConnectETH, setLayer } from 'actions/setupAction.js'
import BobaIcon from 'components/icons/BobaIcon.js'
import EthereumIcon from 'components/icons/EthereumIcon.js'
import React, { useCallback, useEffect } from 'react'
Expand All @@ -35,6 +35,8 @@ import {
selectConnectETH,
selectConnectBOBA,
selectConnect,
selectWalletConnected,
selectChainIdChanged,
} from 'selectors/setupSelector'

import {
Expand All @@ -52,10 +54,10 @@ import { setEnableAccount, setWalletAddress } from 'actions/setupAction'

import { fetchTransactions, fetchBalances } from 'actions/networkAction'

import { openModal } from 'actions/uiAction'
import { closeModal, openModal } from 'actions/uiAction'
import Button from 'components/button/Button.js'
import { L1_ICONS, L2_ICONS } from 'util/network/network.util.js'
import { LAYER } from 'util/constant.js'
import { LAYER, DISABLE_WALLETCONNECT } from 'util/constant.js'

function LayerSwitcher({ visisble = true, isButton = false }) {
const dispatch = useDispatch()
Expand All @@ -74,6 +76,8 @@ function LayerSwitcher({ visisble = true, isButton = false }) {
const connectETHRequest = useSelector(selectConnectETH())
const connectBOBARequest = useSelector(selectConnectBOBA())
const connectRequest = useSelector(selectConnect())
const walletConnected = useSelector(selectWalletConnected())
const chainIdChanged = useSelector(selectChainIdChanged())

const theme = useTheme()
const isMobile = useMediaQuery(theme.breakpoints.down('md'))
Expand All @@ -82,21 +86,15 @@ function LayerSwitcher({ visisble = true, isButton = false }) {
? truncate(networkService.account, 6, 4, '...')
: ''

const chainChangedFromMM = JSON.parse(
localStorage.getItem('chainChangedFromMM')
)
const wantChain = JSON.parse(localStorage.getItem('wantChain'))
const chainChangedInit = JSON.parse(localStorage.getItem('chainChangedInit'))

const dispatchBootAccount = useCallback(() => {

if (!accountEnabled && baseEnabled) initializeAccount()
if ((!accountEnabled && baseEnabled) || chainIdChanged) initializeAccount()

async function initializeAccount() {

const initialized = await networkService.initializeAccount({
networkGateway: network,
networkType,
chainIdChanged,
})
if (initialized === 'nometamask') {
dispatch(openModal('noMetaMaskModal'));
Expand All @@ -110,6 +108,7 @@ function LayerSwitcher({ visisble = true, isButton = false }) {
return false
}
else if (initialized === LAYER.L1 || initialized === LAYER.L2) {
dispatch(closeModal('wrongNetworkModal'))
dispatch(setLayer(initialized))
dispatch(setEnableAccount(true))
dispatch(setWalletAddress(networkService.account))
Expand All @@ -120,49 +119,60 @@ function LayerSwitcher({ visisble = true, isButton = false }) {
return false
}
}
}, [dispatch, accountEnabled, network, networkType, baseEnabled])
}, [dispatch, accountEnabled, network, networkType, baseEnabled, chainIdChanged])

const doConnectToLayer = useCallback((layer) => {
function resetConnectChain() {
dispatch(setConnect(false))
dispatch(setConnectETH(false))
}

async function doConnect() {
try {
localStorage.setItem('wantChain', JSON.stringify(layer))
await networkService.switchChain(layer)
dispatchBootAccount()
if (networkService.walletService.provider) {
if (await networkService.switchChain(layer)) {
if (layer === 'L1') {
dispatch(setConnectBOBA(false))
} else {
dispatch(setConnectETH(false))
}
dispatchBootAccount()
} else {
resetConnectChain()
}
} else {
// bypass walletSelectorModal
if (DISABLE_WALLETCONNECT) {
if (await networkService.walletService.connectWallet('metamask')) {
dispatch(setWalletConnected(true))
} else {
resetConnectChain()
}
} else {
resetConnectChain()
dispatch(openModal('walletSelectorModal'))
}
}
} catch (err) {
console.log('ERROR', err)
dispatch(setConnectETH(false));
dispatch(setConnectBOBA(false));
resetConnectChain()
}
}
doConnect();
}, [dispatch, dispatchBootAccount])

useEffect(() => {
// detect mismatch and correct the mismatch
if (wantChain === 'L1' && layer === 'L2') {
dispatchBootAccount()
} else if (wantChain === 'L2' && layer === 'L1') {
if (walletConnected) {
dispatchBootAccount()
}
}, [wantChain, layer, dispatchBootAccount])
}, [walletConnected, dispatchBootAccount])

useEffect(() => {
// auto reconnect to MM if we just switched chains from
// with the chain switcher, and then unset the flag.
if (chainChangedInit) {
dispatchBootAccount()
localStorage.setItem('chainChangedInit', false)
}
}, [chainChangedInit, dispatchBootAccount])

useEffect(() => {
// auto reconnect to MM if we just switched chains from
// inside MM, and then unset the flag.
if (chainChangedFromMM) {
// detect mismatch and correct the mismatch
if (layer === 'L1' || layer === 'L2') {
dispatchBootAccount()
localStorage.setItem('chainChangedFromMM', false)
}
}, [chainChangedFromMM, dispatchBootAccount])
}, [layer, dispatchBootAccount])

// listening for l1 connection request
useEffect(() => {
Expand All @@ -179,10 +189,15 @@ function LayerSwitcher({ visisble = true, isButton = false }) {
}, [ connectBOBARequest, doConnectToLayer ])

useEffect(() => {
if (connectRequest) {
dispatchBootAccount()
if (connectRequest && !networkService.walletService.provider) {
// bypass walletSelectorModal
if (DISABLE_WALLETCONNECT) {
dispatchBootAccount()
} else {
dispatch(openModal('walletSelectorModal'))
}
}
}, [connectRequest, dispatchBootAccount])
}, [dispatch, connectRequest, dispatchBootAccount])

if (!visisble) {
return null
Expand Down
2 changes: 1 addition & 1 deletion packages/boba/gateway/src/components/modal/Modal.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ function _Modal({

{
!!newStyle ?
<Container maxWidth={maxWidth || "lg"} sx={{ border: 'none', position: 'relative' }}>
<Container maxWidth={maxWidth || "lg"} sx={{ border: 'none', position: 'relative', maxWidth }}>
<S.Style minHeight={minHeight || '430px'} isMobile={isMobile} transparent={!!transparent || !!isMobile}>
<Box display="flex" flexDirection="column" gap="10px">
<S.ModalHead>
Expand Down
7 changes: 7 additions & 0 deletions packages/boba/gateway/src/components/modal/Modal.styles.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,10 @@ export const Content = styled(Box)(({ theme }) => ({
flexDirection: 'column',
gap:'10px',
}));

export const BoxCenter = styled(Box)(({ theme }) => ({
display: 'flex',
justifyContent: 'space-around',
alignItems: 'center',
cursor: 'pointer',
}))
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import CloseIcon from 'components/icons/CloseIcon'
import networkService from 'services/networkService'
import { makeStyles } from '@mui/styles'
import Copy from 'components/copy/Copy'
import Disconnect from 'components/disconnect/Disconnect'
import { useSelector } from 'react-redux'
import {
selectAccountEnabled,
Expand Down Expand Up @@ -169,7 +170,10 @@ const PageHeader = ({ maintenance }) => {
<WalletSwitch />
<NetworkSwitcher />
{!!accountEnabled ? (
<Copy value={networkService.account} light={false} />
<>
<Copy value={networkService.account} light={false} />
<Disconnect light={false} />
</>
) : null}
<ThemeSwitcher />
</S.HeaderWrapper>
Expand Down
3 changes: 3 additions & 0 deletions packages/boba/gateway/src/containers/home/Home.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ import TransferPendingModal from 'containers/modals/transferPending/TransferPend
import WrongNetworkModal from 'containers/modals/wrongNetwork/WrongNetworkModal';
import ManageLockModal from 'containers/modals/veBoba/ManageLockModal';
import NoMetaMaskModal from 'containers/modals/noMetaMask/NoMetaMaskModal'
import WalletSelectorModal from 'containers/modals/walletSelector/WalletSelectorModal'
import CDMCompletionModal from 'containers/modals/CDMCompletion/CDMCompletionModal'

/******** COMPONENTS ********/
Expand Down Expand Up @@ -118,6 +119,7 @@ function Home() {
const noMetaMaskModalState = useSelector(selectModalState('noMetaMaskModal'));
const installMetaMaskModalState = useSelector(selectModalState('installMetaMaskModal'));
const manageLockModalState = useSelector(selectModalState('manageLock'));
const walletSelectorModalState = useSelector(selectModalState('walletSelectorModal'));
const CDMCompletionModalState = useSelector(selectModalState('CDMCompletionModal'));

const fast = useSelector(selectModalState('fast'))
Expand Down Expand Up @@ -247,6 +249,7 @@ function Home() {
{!!noMetaMaskModalState && <NoMetaMaskModal open={noMetaMaskModalState} />}
{!!installMetaMaskModalState && <InstallMetaMaskModal open={installMetaMaskModalState} />}
{!!manageLockModalState && <ManageLockModal open={manageLockModalState} lock={lock} />}
{!!walletSelectorModalState && <WalletSelectorModal open={walletSelectorModalState} />}
{!!CDMCompletionModalState && <CDMCompletionModal open={CDMCompletionModalState} />}

<Alert
Expand Down
Loading