1- import { BrowserRouter , Routes , Route , Navigate , useNavigate , useLocation } from 'react-router-dom' ;
1+ import { BrowserRouter , Routes , Route , Navigate , useNavigate , useLocation , useParams } from 'react-router-dom' ;
22import { useState , useEffect , useCallback , lazy , Suspense , useMemo , type ReactNode } from 'react' ;
33import { ModalForm } from '@object-ui/plugin-form' ;
44import { Empty , EmptyTitle , EmptyDescription , Button } from '@object-ui/components' ;
@@ -60,7 +60,6 @@ const ProfilePage = lazy(() => import('./pages/system/ProfilePage').then(m => ({
6060const HomePage = lazy ( ( ) => import ( './pages/home/HomePage' ) . then ( m => ( { default : m . HomePage } ) ) ) ;
6161const HomeLayout = lazy ( ( ) => import ( './pages/home/HomeLayout' ) . then ( m => ( { default : m . HomeLayout } ) ) ) ;
6262
63- import { useParams } from 'react-router-dom' ;
6463import { ThemeProvider } from './components/theme-provider' ;
6564import { ConsoleToaster } from './components/ConsoleToaster' ;
6665
@@ -294,7 +293,7 @@ export function AppContent() {
294293 < Route path = "system" element = { < SystemHubPage /> } />
295294 < Route path = "system/apps" element = { < AppManagementPage /> } />
296295 < Route path = "system/objects" element = { < Navigate to = "/system/metadata/object" replace /> } />
297- < Route path = "system/objects/:objectName" element = { < Navigate to = "/system/metadata/object" replace /> } />
296+ < Route path = "system/objects/:objectName" element = { < ObjectRedirect /> } />
298297 < Route path = "system/users" element = { < UserManagementPage /> } />
299298 < Route path = "system/organizations" element = { < OrgManagementPage /> } />
300299 < Route path = "system/roles" element = { < RoleManagementPage /> } />
@@ -389,8 +388,8 @@ export function AppContent() {
389388 { /* System Administration Routes */ }
390389 < Route path = "system" element = { < SystemHubPage /> } />
391390 < Route path = "system/apps" element = { < AppManagementPage /> } />
392- < Route path = "system/objects" element = { < Navigate to = "system/metadata/object" replace /> } />
393- < Route path = "system/objects/:objectName" element = { < Navigate to = "system/metadata/object" replace /> } />
391+ < Route path = "system/objects" element = { < Navigate to = "/ system/metadata/object" replace /> } />
392+ < Route path = "system/objects/:objectName" element = { < ObjectRedirect /> } />
394393 < Route path = "system/users" element = { < UserManagementPage /> } />
395394 < Route path = "system/organizations" element = { < OrgManagementPage /> } />
396395 < Route path = "system/roles" element = { < RoleManagementPage /> } />
@@ -475,6 +474,19 @@ function RootRedirect() {
475474 return < Navigate to = "/home" replace /> ;
476475}
477476
477+ /**
478+ * Redirect helper for legacy `/system/objects/:objectName` routes.
479+ * Preserves the `objectName` URL param so that
480+ * `/system/objects/account` → `/system/metadata/object/account`.
481+ */
482+ function ObjectRedirect ( ) {
483+ const { objectName } = useParams < { objectName ?: string } > ( ) ;
484+ const target = objectName
485+ ? `/system/metadata/object/${ objectName } `
486+ : '/system/metadata/object' ;
487+ return < Navigate to = { target } replace /> ;
488+ }
489+
478490/**
479491 * SystemRoutes — Top-level system admin routes accessible without any app context.
480492 * Provides a minimal layout with system navigation sidebar.
@@ -486,7 +498,7 @@ function SystemRoutes() {
486498 < Route path = "/" element = { < SystemHubPage /> } />
487499 < Route path = "apps" element = { < AppManagementPage /> } />
488500 < Route path = "objects" element = { < Navigate to = "/system/metadata/object" replace /> } />
489- < Route path = "objects/:objectName" element = { < Navigate to = "/system/metadata/object" replace /> } />
501+ < Route path = "objects/:objectName" element = { < ObjectRedirect /> } />
490502 < Route path = "users" element = { < UserManagementPage /> } />
491503 < Route path = "organizations" element = { < OrgManagementPage /> } />
492504 < Route path = "roles" element = { < RoleManagementPage /> } />
0 commit comments