-import axios from 'axios';
-import React, { useEffect, useState } from 'react';
+import React from 'react';
import { Helmet } from 'react-helmet';
import { useTranslation } from 'react-i18next';
-import { BrowserRouter } from 'react-router-dom';
import Routes from './Routes';
import AlttpBaseRomProvider from '../helpers/AlttpBaseRomContext';
-import UserContext from '../helpers/UserContext';
+import { SNESProvider } from '../hooks/snes';
+import { UserProvider } from '../hooks/user';
import i18n from '../i18n';
const App = () => {
- const [user, setUser] = useState(null);
-
const { t } = useTranslation();
- const checkAuth = async () => {
- try {
- const response = await axios.get('/api/user');
- setUser(response.data);
- } catch (e) {
- setUser(null);
- }
- };
-
- const doLogout = async () => {
- await axios.post('/logout');
- await checkAuth();
- };
-
- useEffect(() => {
- let timer = null;
- axios
- .get('/sanctum/csrf-cookie')
- .then(() => {
- checkAuth();
- timer = setInterval(checkAuth, 15 * 60 * 1000);
- });
- return () => {
- if (timer) clearInterval(timer);
- };
- }, []);
-
- useEffect(() => {
+ React.useEffect(() => {
window.Echo.channel('App.Control')
.listen('PleaseRefresh', () => {
location.reload();
};
}, []);
- return <BrowserRouter>
- <AlttpBaseRomProvider>
- <UserContext.Provider value={user}>
+ return <AlttpBaseRomProvider>
+ <SNESProvider>
+ <UserProvider>
<Helmet>
<html lang={i18n.language} />
<title>{t('general.appName')}</title>
<meta name="description" content={t('general.appDescription')} />
</Helmet>
- <Routes doLogout={doLogout} />
- </UserContext.Provider>
- </AlttpBaseRomProvider>
- </BrowserRouter>;
+ <Routes />
+ </UserProvider>
+ </SNESProvider>
+ </AlttpBaseRomProvider>;
};
export default App;