import { createClient, FluenceClient, subscribeToEvent } from '@fluencelabs/fluence'; import React, { useEffect, useState } from 'react'; import { createFilter, getFilterChanges, getFilterChangesWithoutNulls, getTxInfo, relayNode, removeFilter, TxInfo, } from 'src/fluence'; import './App.scss'; const intervalMs = 4000; const App = () => { const [client, setClient] = useState(null); const [ethNodeUrl, setEthNodeUrl] = useState(''); const [filterId, setFilterId] = useState(null); const [timer, setTimer] = useState(); const [data, setData] = useState([]); const updateData = async (filterId) => { if (!filterId || !client) { return; } try { const data = await getFilterChangesWithoutNulls(client, ethNodeUrl, filterId, '50'); console.log(data); setData((prev) => { return [...data, ...prev]; }); } catch (err) { console.log('updateData failed', err); } }; useEffect(() => { const fn = async () => { try { const client = await createClient(relayNode); setClient(client); } catch (err) { console.log('Client initialization failed', err); } }; fn(); }, []); const start = async () => { if (!client) { return; } try { const filterId = await createFilter(client, ethNodeUrl); setFilterId(filterId); const timer = setInterval(updateData, intervalMs, filterId); setTimer(timer); } catch (err) { console.log('createFilter failed', err); } }; const stop = async () => { if (!filterId || !client) { return; } try { clearInterval(timer); setTimer(null); const res = await removeFilter(client, ethNodeUrl, filterId); console.log(res); setFilterId(null); setData([]); } catch (err) { console.log('stop failed', err); } }; return ( <>
Connection status: {client ? connected : 'disconnected'}
Node address. e.g: https://eth-mainnet.alchemyapi.io/v2/xxxxxxx-xxxxxxxx-xxxxxxxxxx_xxxx
setEthNodeUrl(e.target.value)} type="text" value={ethNodeUrl} />
{data.map((x) => ( ))}
from to gas gas price hash
{x.from} {x.to} {parseInt(x.gas, 16)} {parseInt(x.gasPrice, 16)} {x.hash}
); }; export default App;