corda-checkers/webapp/src/App.js

58 lines
1.3 KiB
JavaScript
Raw Normal View History

2023-08-13 15:31:47 +02:00
import './App.css';
import React, { useState, useEffect, useCallback } from 'react';
import {
BrowserRouter,
Routes, //replaces "Switch" used till v5
Route,
} from "react-router-dom";
import Header from "./Header"
import Leaderboard from "./Leaderboard";
import GameProposal from "./GameProposal";
function App() {
const [games, setGames] = useState(null);
const [polling, setPolling] = useState(false);
const pollGames = useCallback(() => {
console.log('start polling..');
if (polling) {
console.log(' ..already in progress');
return;
}
setPolling(true);
fetch('/api/gamestate')
.then(response => response.json())
.then(data => {
console.log('poooled');
setGames(data);
setPolling(false);
})
.catch(err => console.log(err.message));
}, [polling]);
2023-08-13 15:31:47 +02:00
useEffect(() => {
const timer = setInterval(pollGames(), 35 * 1000);
return clearInterval(timer);
}, [pollGames])
2023-08-13 15:31:47 +02:00
return (
<div className="App">
<BrowserRouter>
<Header/>
<div className="Container">
<Routes>
<Route path="/leaderboard" element={<Leaderboard/>} />
<Route path="/gameproposal" element={<GameProposal games={games}/>} />
</Routes>
</div>
</BrowserRouter>
2023-08-13 15:31:47 +02:00
</div>
);
}
export default App;