1 import axios from 'axios';
2 import React, { useEffect, useState } from 'react';
3 import { Helmet } from 'react-helmet';
4 import { useTranslation } from 'react-i18next';
5 import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
7 import Footer from './common/Footer';
8 import Header from './common/Header';
9 import AlttpSeed from './pages/AlttpSeed';
10 import Front from './pages/Front';
11 import Map from './pages/Map';
12 import Technique from './pages/Technique';
13 import Techniques from './pages/Techniques';
14 import Tournament from './pages/Tournament';
15 import User from './pages/User';
16 import AlttpBaseRomProvider from '../helpers/AlttpBaseRomContext';
17 import UserContext from '../helpers/UserContext';
18 import i18n from '../i18n';
21 const [user, setUser] = useState(null);
23 const { t } = useTranslation();
25 const checkAuth = async () => {
27 const response = await axios.get('/api/user');
28 setUser(response.data);
34 const doLogout = async () => {
35 await axios.post('/logout');
42 .get('/sanctum/csrf-cookie')
45 timer = setInterval(checkAuth, 15 * 60 * 1000);
48 if (timer) clearInterval(timer);
53 window.Echo.channel('App.Control')
54 .listen('PleaseRefresh', () => {
58 window.Echo.leave('App.Control');
62 return <BrowserRouter>
63 <AlttpBaseRomProvider>
64 <UserContext.Provider value={user}>
66 <html lang={i18n.language} />
67 <title>{t('general.appName')}</title>
68 <meta name="description" content={t('general.appDescription')} />
70 <Header doLogout={doLogout} />
72 <Route path="h/:hash" element={<AlttpSeed />} />
73 <Route path="map" element={<Map />} />
76 element={<Techniques namespace="modes" type="mode" />}
80 element={<Technique namespace="modes" type="mode" />}
84 element={<Techniques namespace="rulesets" type="ruleset" />}
88 element={<Technique namespace="rulesets" type="ruleset" />}
92 element={<Techniques namespace="techniques" type="tech" />}
96 element={<Technique namespace="techniques" type="tech" />}
98 <Route path="tournaments/:id" element={<Tournament />} />
99 <Route path="users/:id" element={<User />} />
100 <Route path="/" element={<Front />} />
101 <Route path="*" element={<Navigate to="/" />} />
104 </UserContext.Provider>
105 </AlttpBaseRomProvider>