1 import axios from 'axios';
2 import React, { useEffect, useState } from 'react';
3 import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
5 import Footer from './common/Footer';
6 import Header from './common/Header';
7 import AlttpSeed from './pages/AlttpSeed';
8 import Front from './pages/Front';
9 import Map from './pages/Map';
10 import Technique from './pages/Technique';
11 import Techniques from './pages/Techniques';
12 import Tournament from './pages/Tournament';
13 import User from './pages/User';
14 import AlttpBaseRomProvider from '../helpers/AlttpBaseRomContext';
15 import UserContext from '../helpers/UserContext';
18 const [user, setUser] = useState(null);
20 const checkAuth = async () => {
22 const response = await axios.get('/api/user');
23 setUser(response.data);
29 const doLogout = async () => {
30 await axios.post('/logout');
37 .get('/sanctum/csrf-cookie')
40 timer = setInterval(checkAuth, 15 * 60 * 1000);
43 if (timer) clearInterval(timer);
48 window.Echo.channel('App.Control')
49 .listen('PleaseRefresh', () => {
53 window.Echo.leave('App.Control');
57 return <BrowserRouter>
58 <AlttpBaseRomProvider>
59 <UserContext.Provider value={user}>
60 <Header doLogout={doLogout} />
62 <Route path="h/:hash" element={<AlttpSeed />} />
63 <Route path="map" element={<Map />} />
66 element={<Techniques namespace="modes" type="mode" />}
70 element={<Technique namespace="modes" type="mode" />}
74 element={<Techniques namespace="rulesets" type="ruleset" />}
78 element={<Technique namespace="rulesets" type="ruleset" />}
82 element={<Techniques namespace="techniques" type="tech" />}
86 element={<Technique namespace="techniques" type="tech" />}
88 <Route path="tournaments/:id" element={<Tournament />} />
89 <Route path="users/:id" element={<User />} />
90 <Route path="/" element={<Front />} />
91 <Route path="*" element={<Navigate to="/" />} />
94 </UserContext.Provider>
95 </AlttpBaseRomProvider>