39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import React from 'react';
|
|
import ReactDOM from 'react-dom/client';
|
|
import { ProvideAuth } from './context/auth';
|
|
import 'react-toastify/dist/ReactToastify.css';
|
|
import './index.css';
|
|
import AppRoutes from './AppRoutes';
|
|
import { BrowserRouter } from 'react-router';
|
|
import { client } from '../../types/gen/client.gen';
|
|
import { getToken } from './Utils';
|
|
import { toast } from 'react-toastify';
|
|
|
|
client.setConfig({
|
|
auth: () => getToken(),
|
|
baseUrl: '/api', // openapi-ts si to z nějakého důvodu neumí převzít z api.yml
|
|
});
|
|
|
|
// Interceptor na vyhození toasteru při chybě
|
|
client.interceptors.response.use(async response => {
|
|
// TODO opravit - login je zatím výjimka, voláme ho "naprázdno" abychom zjistili, zda nás nepřihlásily trusted headers
|
|
if (!response.ok && !response.url.includes("/login")) {
|
|
const json = await response.json();
|
|
toast.error(json.error, { theme: "colored" });
|
|
}
|
|
return response;
|
|
});
|
|
|
|
const root = ReactDOM.createRoot(
|
|
document.getElementById('root') as HTMLElement
|
|
);
|
|
root.render(
|
|
<React.StrictMode>
|
|
<BrowserRouter>
|
|
<ProvideAuth>
|
|
<AppRoutes />
|
|
</ProvideAuth>
|
|
</BrowserRouter>
|
|
</React.StrictMode>
|
|
);
|