Skip to content

Commit

Permalink
networkSwitch component setup
Browse files Browse the repository at this point in the history
  • Loading branch information
ghostffcode committed Nov 27, 2021
1 parent 837c90a commit a85560b
Showing 1 changed file with 38 additions and 18 deletions.
56 changes: 38 additions & 18 deletions packages/react-app/src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {
ThemeSwitch,
NetworkDisplay,
FaucetHint,
NetworkSwitch,
} from "./components";
import { NETWORKS, ALCHEMY_KEY } from "./constants";
import externalContracts from "./contracts/external_contracts";
Expand All @@ -42,7 +43,7 @@ const { ethers } = require("ethers");
https://t.me/joinchat/KByvmRe5wkR-8F_zz6AjpA
or DM @austingriffith on twitter or telegram
You should get your own Infura.io ID and put it in `constants.js`
You should get your own Alchemy.com & Infura.io ID and put it in `constants.js`
(this is your connection to the main Ethereum network for ENS etc.)
Expand All @@ -58,12 +59,6 @@ const targetNetwork = NETWORKS.localhost; // <------- select your target fronten
const DEBUG = true;
const NETWORKCHECK = true;

// 🛰 providers
if (DEBUG) console.log("📡 Connecting to Mainnet Ethereum");

// 🔭 block explorer URL
const blockExplorer = targetNetwork.blockExplorer;

const web3Modal = Web3ModalSetup();

// 🛰 providers
Expand All @@ -74,16 +69,32 @@ const providers = [
];

function App(props) {
// specify all the chains your app is available on. Eg: ['localhost', 'mainnet', ...otherNetworks ]
// reference './constants.js' for other networks
const networkOptions = ["localhost", "mainnet", "rinkeby"];

const [injectedProvider, setInjectedProvider] = useState();
const [address, setAddress] = useState();
const [selectedNetwork, setSelectedNetwork] = useState(networkOptions[0]);
const location = useLocation();

/// 📡 What chain are your contracts deployed to?
const targetNetwork = NETWORKS[selectedNetwork]; // <------- select your target frontend network (localhost, rinkeby, xdai, mainnet)

// 🔭 block explorer URL
const blockExplorer = targetNetwork.blockExplorer;

// load all your providers
const localProvider = useStaticJsonRPC([
process.env.REACT_APP_PROVIDER ? process.env.REACT_APP_PROVIDER : targetNetwork.rpcUrl,
]);
const mainnetProvider = useStaticJsonRPC(providers);

if (DEBUG) console.log(`Using ${selectedNetwork} network`);

// 🛰 providers
if (DEBUG) console.log("📡 Connecting to Mainnet Ethereum");

const logoutOfWeb3Modal = async () => {
await web3Modal.clearCachedProvider();
if (injectedProvider && injectedProvider.provider && typeof injectedProvider.provider.disconnect == "function") {
Expand Down Expand Up @@ -340,17 +351,26 @@ function App(props) {

{/* 👨‍💼 Your account is in the top right with a wallet at connect options */}
<div style={{ position: "fixed", textAlign: "right", right: 0, top: 0, padding: 10 }}>
<Account
address={address}
localProvider={localProvider}
userSigner={userSigner}
mainnetProvider={mainnetProvider}
price={price}
web3Modal={web3Modal}
loadWeb3Modal={loadWeb3Modal}
logoutOfWeb3Modal={logoutOfWeb3Modal}
blockExplorer={blockExplorer}
/>
<div style={{ display: "flex", flex: 1, alignItems: "center" }}>
<div style={{ marginRight: 20 }}>
<NetworkSwitch
networkOptions={networkOptions}
selectedNetwork={selectedNetwork}
setSelectedNetwork={setSelectedNetwork}
/>
</div>
<Account
address={address}
localProvider={localProvider}
userSigner={userSigner}
mainnetProvider={mainnetProvider}
price={price}
web3Modal={web3Modal}
loadWeb3Modal={loadWeb3Modal}
logoutOfWeb3Modal={logoutOfWeb3Modal}
blockExplorer={blockExplorer}
/>
</div>
<FaucetHint localProvider={localProvider} targetNetwork={targetNetwork} address={address} />
</div>

Expand Down

0 comments on commit a85560b

Please sign in to comment.