Files
protoc-frontend/src/app/App.tsx
2026-03-26 10:44:11 +03:00

77 lines
2.2 KiB
TypeScript

import { FC, useEffect } from 'react'
import { Navigate, Route, Routes } from 'react-router-dom'
import Layout from '@/app/Layout'
import { CategoryProvider } from '@/entity/template/model/CategoryContext'
import { TemplateProvider } from '@/entity/template/model/TemplateContext'
import {
setGlobalToastContext,
ToastProvider,
useToast,
} from '@/lib/hooks/useToast'
import {
ElementsCreation,
FunctionsWikiPage,
ProtocolCreation,
StandardsManagementPage,
TemplateEditPage,
TemplatesOverviewPage,
} from '@/page'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
const queryClient = new QueryClient()
// Компонент для инициализации глобального контекста toast
const ToastInitializer: FC = () => {
const toast = useToast()
useEffect(() => {
setGlobalToastContext(toast)
}, [toast])
return null
}
const App: FC = () => {
return (
<QueryClientProvider client={queryClient}>
<ToastProvider>
<ToastInitializer />
<CategoryProvider>
<TemplateProvider>
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Navigate to="/templates" replace />} />
<Route path="templates/" element={<TemplatesOverviewPage />} />
<Route
path="templates/:templateId/edit"
element={<TemplateEditPage />}
/>
<Route
path="templates/:templateId/elements"
element={<ElementsCreation />}
/>
<Route
path="templates/:templateId/protocols"
element={<ProtocolCreation />}
/>
<Route
path="standards-management"
element={<StandardsManagementPage />}
/>
<Route
path="functions-wiki"
element={<FunctionsWikiPage />}
/>
</Route>
</Routes>
</TemplateProvider>
</CategoryProvider>
</ToastProvider>
</QueryClientProvider>
)
}
export default App