import '@ethersproject/shims'; import React, { useEffect, useState } from 'react'; import './App.css'; import { Waku } from 'js-waku'; import { ethers } from 'ethers'; import { Web3Provider } from '@ethersproject/providers'; import { KeyPair } from './crypto'; import { Message } from './messaging/Messages'; import 'fontsource-roboto'; import { AppBar, IconButton, Toolbar, Typography } from '@material-ui/core'; import KeyPairHandling from './key_pair_handling/KeyPairHandling'; import InitWaku from './InitWaku'; import { createMuiTheme, ThemeProvider, makeStyles, } from '@material-ui/core/styles'; import { teal, purple, green } from '@material-ui/core/colors'; import WifiIcon from '@material-ui/icons/Wifi'; import BroadcastPublicKey from './BroadcastPublicKey'; import Messaging from './messaging/Messaging'; declare let window: any; const theme = createMuiTheme({ palette: { primary: { main: purple[500], }, secondary: { main: teal[600], }, }, }); const useStyles = makeStyles({ root: { textAlign: 'center', display: 'flex', flexDirection: 'column', minHeight: '100vh', }, appBar: { // height: '200p', }, container: { display: 'flex', flex: 1, }, main: { flex: 1, margin: '10px', }, wakuStatus: {}, }); function App() { const [waku, setWaku] = useState(); const [provider, setProvider] = useState(); const [ethDmKeyPair, setEthDmKeyPair] = useState(); const [publicKeys, setPublicKeys] = useState>(new Map()); const [messages, setMessages] = useState([]); const [address, setAddress] = useState(); const classes = useStyles(); useEffect(() => { if (provider) return; try { window.ethereum.request({ method: 'eth_requestAccounts' }); const _provider = new ethers.providers.Web3Provider(window.ethereum); setProvider(_provider); } catch (e) { console.error('No web3 provider available'); } }, [provider]); useEffect(() => { provider ?.getSigner() .getAddress() .then((address) => setAddress(address)); }); let peers; if (waku) { peers = waku.libp2p.connectionManager.connections.size; } return (
Ethereum Direct Message {peers}
Eth-DM Key Pair setEthDmKeyPair(keyPair)} />
Messaging
); } export default App;