ConceptPortal-public/rsconcept/frontend/src/index.tsx

55 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-07-15 17:46:19 +03:00
'use client';
import React from 'react';
import axios from 'axios';
import './index.css';
import 'react-toastify/dist/ReactToastify.css';
2023-07-15 17:46:19 +03:00
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import App from './App';
import { AuthState } from './context/AuthContext';
import { ThemeState } from './context/ThemeContext';
import { IntlProvider } from 'react-intl';
import { ErrorBoundary } from 'react-error-boundary';
import ErrorFallback from './components/ErrorFallback';
import { UsersState } from './context/UsersContext';
axios.defaults.withCredentials = true
axios.defaults.xsrfCookieName = 'csrftoken'
axios.defaults.xsrfHeaderName = 'x-csrftoken'
const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement
);
const resetState = () => {
console.log('Resetting state after error fallback')
};
const logError = (error: Error, info: { componentStack: string }) => {
console.log('Error fallback: ' + error.message)
console.log('Component stack: ' + info)
};
root.render(
<React.StrictMode>
<BrowserRouter>
<ErrorBoundary
FallbackComponent={ErrorFallback}
onReset={resetState}
onError={logError}
>
<IntlProvider locale='ru' defaultLocale='ru'>
<ThemeState>
<AuthState>
<UsersState>
<App />
</UsersState>
</AuthState>
</ThemeState>
</IntlProvider>
</ErrorBoundary>
</BrowserRouter>
</React.StrictMode>
);