- Introduced ModelRoutes to handle dynamic routing for model pages based on object models. - Created ActionsContext to manage actions and modal states across components, improving action handling and navigation. - Updated various components to utilize the new buildActionUrl utility for consistent URL generation. - Refactored existing components to integrate the ActionsProvider, enhancing state management and user interaction.
191 lines
7.1 KiB
JavaScript
191 lines
7.1 KiB
JavaScript
import {
|
|
HashRouter,
|
|
BrowserRouter,
|
|
Routes,
|
|
Route,
|
|
Navigate
|
|
} from 'react-router-dom'
|
|
import { App, ConfigProvider } from 'antd'
|
|
import { lazy } from 'react'
|
|
|
|
import Dashboard from './components/Dashboard/Dashboard.jsx'
|
|
import PrivateRoute from './components/PrivateRoute'
|
|
import '../assets/stylesheets/App.css'
|
|
import { PrintServerProvider } from './components/Dashboard/context/PrintServerContext.jsx'
|
|
import { AuthProvider } from './components/Dashboard/context/AuthContext.jsx'
|
|
import {
|
|
SpotlightProvider,
|
|
ElectronSpotlightContentPage
|
|
} from './components/Dashboard/context/SpotlightContext.jsx'
|
|
import { ActionsModalProvider } from './components/Dashboard/context/ActionsModalContext.jsx'
|
|
import { ActionsProvider } from './components/Dashboard/context/ActionsContext.jsx'
|
|
import MissingPlaceholder from './components/Dashboard/common/MissingPlaceholder.jsx'
|
|
|
|
import {
|
|
ThemeProvider,
|
|
useThemeContext
|
|
} from './components/Dashboard/context/ThemeContext'
|
|
import AppError from './components/App/AppError'
|
|
import { ApiServerProvider } from './components/Dashboard/context/ApiServerContext.jsx'
|
|
import { NotificationProvider } from './components/Dashboard/context/NotificationContext.jsx'
|
|
import { ElectronProvider } from './components/Dashboard/context/ElectronContext.jsx'
|
|
import { MessageProvider } from './components/Dashboard/context/MessageContext.jsx'
|
|
import { AppUpdateProvider } from './components/Dashboard/context/AppUpdateContext.jsx'
|
|
import AuthCallback from './components/App/AuthCallback.jsx'
|
|
import EmailNotificationTemplate from './components/Email/EmailNotificationTemplate.jsx'
|
|
import MarketplaceAuthCallback from './components/Dashboard/Sales/Marketplaces/MarketplaceAuthCallback.jsx'
|
|
import AuthLaunch from './components/App/AppLaunch.jsx'
|
|
import { TableStateProvider } from './components/Dashboard/context/TableStateContext.jsx'
|
|
const SlicerIntegration = lazy(
|
|
() =>
|
|
import('./components/Dashboard/Production/Printers/SlicerIntegration.jsx')
|
|
)
|
|
|
|
import {
|
|
ProductionRoutes,
|
|
InventoryRoutes,
|
|
FinanceRoutes,
|
|
SalesRoutes,
|
|
ManagementRoutes,
|
|
DeveloperRoutes,
|
|
ModelRoutes
|
|
} from './routes'
|
|
|
|
const getRouter = () => {
|
|
if (
|
|
typeof window !== 'undefined' &&
|
|
window.location.href.includes('index.html')
|
|
) {
|
|
return HashRouter
|
|
}
|
|
return BrowserRouter
|
|
}
|
|
|
|
const AppContent = () => {
|
|
const { themeConfig } = useThemeContext()
|
|
const Router = getRouter()
|
|
|
|
return (
|
|
<ConfigProvider
|
|
theme={themeConfig}
|
|
renderEmpty={() => (
|
|
<div style={{ margin: '32px' }}>
|
|
<MissingPlaceholder
|
|
message='No data.'
|
|
hasBackground={false}
|
|
hasBorder={false}
|
|
/>
|
|
</div>
|
|
)}
|
|
>
|
|
<App>
|
|
<Router>
|
|
<ElectronProvider>
|
|
<AuthProvider>
|
|
<PrintServerProvider>
|
|
<ApiServerProvider>
|
|
<MessageProvider>
|
|
<TableStateProvider>
|
|
<AppUpdateProvider>
|
|
<NotificationProvider>
|
|
<SpotlightProvider>
|
|
<ActionsModalProvider>
|
|
<ActionsProvider>
|
|
<Routes>
|
|
<Route
|
|
path='/applaunch'
|
|
element={<AuthLaunch />}
|
|
/>
|
|
<Route
|
|
path='/dashboard/electron/spotlightcontent'
|
|
element={
|
|
<PrivateRoute
|
|
component={() => (
|
|
<ElectronSpotlightContentPage />
|
|
)}
|
|
/>
|
|
}
|
|
/>
|
|
<Route
|
|
path='/'
|
|
element={
|
|
<PrivateRoute
|
|
component={() => (
|
|
<Navigate
|
|
to='/dashboard/production/overview'
|
|
replace
|
|
/>
|
|
)}
|
|
/>
|
|
}
|
|
/>
|
|
<Route
|
|
path='/auth/callback'
|
|
element={<AuthCallback />}
|
|
/>
|
|
<Route
|
|
path='/auth/marketplace/callback'
|
|
element={<MarketplaceAuthCallback />}
|
|
/>
|
|
<Route
|
|
path='/email/notification'
|
|
element={<EmailNotificationTemplate />}
|
|
/>
|
|
<Route
|
|
path='/slicer'
|
|
element={<SlicerIntegration />}
|
|
/>
|
|
|
|
<Route
|
|
path='/dashboard'
|
|
element={
|
|
<PrivateRoute
|
|
component={() => <Dashboard />}
|
|
/>
|
|
}
|
|
>
|
|
{ProductionRoutes}
|
|
{InventoryRoutes}
|
|
{FinanceRoutes}
|
|
{SalesRoutes}
|
|
{ManagementRoutes}
|
|
{ModelRoutes}
|
|
{DeveloperRoutes}
|
|
</Route>
|
|
<Route
|
|
path='*'
|
|
element={
|
|
<AppError
|
|
message='Error 404. Page not found.'
|
|
showRefresh={false}
|
|
/>
|
|
}
|
|
/>
|
|
</Routes>
|
|
</ActionsProvider>
|
|
</ActionsModalProvider>
|
|
</SpotlightProvider>
|
|
</NotificationProvider>
|
|
</AppUpdateProvider>
|
|
</TableStateProvider>
|
|
</MessageProvider>
|
|
</ApiServerProvider>
|
|
</PrintServerProvider>
|
|
</AuthProvider>
|
|
</ElectronProvider>
|
|
</Router>
|
|
</App>
|
|
</ConfigProvider>
|
|
)
|
|
}
|
|
|
|
const FarmControlApp = () => {
|
|
return (
|
|
<ThemeProvider>
|
|
<AppContent />
|
|
</ThemeProvider>
|
|
)
|
|
}
|
|
|
|
export default FarmControlApp
|