Do not crash if Ethereum is locked

This commit is contained in:
Franck Royer 2021-07-02 13:27:50 +10:00
parent 6bc79ad587
commit 5c3f768c83
No known key found for this signature in database
GPG Key ID: A82ED75A8DFC50A4

View File

@ -4,7 +4,7 @@ import React, { useEffect, useState } from 'react';
import './App.css'; import './App.css';
import { Waku } from 'js-waku'; import { Waku } from 'js-waku';
import { ethers } from 'ethers'; import { ethers } from 'ethers';
import { Web3Provider } from '@ethersproject/providers'; import { Signer } from '@ethersproject/abstract-signer';
import { KeyPair } from './crypto'; import { KeyPair } from './crypto';
import { Message } from './messaging/Messages'; import { Message } from './messaging/Messages';
import 'fontsource-roboto'; import 'fontsource-roboto';
@ -57,7 +57,7 @@ const useStyles = makeStyles({
function App() { function App() {
const [waku, setWaku] = useState<Waku>(); const [waku, setWaku] = useState<Waku>();
const [provider, setProvider] = useState<Web3Provider>(); const [signer, setSigner] = useState<Signer>();
const [ethDmKeyPair, setEthDmKeyPair] = useState<KeyPair | undefined>(); const [ethDmKeyPair, setEthDmKeyPair] = useState<KeyPair | undefined>();
const [publicKeys, setPublicKeys] = useState<Map<string, string>>(new Map()); const [publicKeys, setPublicKeys] = useState<Map<string, string>>(new Map());
const [messages, setMessages] = useState<Message[]>([]); const [messages, setMessages] = useState<Message[]>([]);
@ -66,22 +66,18 @@ function App() {
const classes = useStyles(); const classes = useStyles();
useEffect(() => { useEffect(() => {
if (provider) return;
try { try {
window.ethereum.request({ method: 'eth_requestAccounts' }); window.ethereum
const _provider = new ethers.providers.Web3Provider(window.ethereum); .request({ method: 'eth_requestAccounts' })
setProvider(_provider); .then((accounts: string[]) => {
const _provider = new ethers.providers.Web3Provider(window.ethereum);
setAddress(accounts[0]);
setSigner(_provider.getSigner());
});
} catch (e) { } catch (e) {
console.error('No web3 provider available'); console.error('No web3 provider available');
} }
}, [provider]); }, [address, signer]);
useEffect(() => {
provider
?.getSigner()
.getAddress()
.then((address) => setAddress(address));
});
let peers; let peers;
if (waku) { if (waku) {
@ -125,7 +121,7 @@ function App() {
setEthDmKeyPair={(keyPair) => setEthDmKeyPair(keyPair)} setEthDmKeyPair={(keyPair) => setEthDmKeyPair(keyPair)}
/> />
<BroadcastPublicKey <BroadcastPublicKey
signer={provider?.getSigner()} signer={signer}
ethDmKeyPair={ethDmKeyPair} ethDmKeyPair={ethDmKeyPair}
waku={waku} waku={waku}
/> />