@ -1,7 +1,5 @@
import { Route , Switch , useLocation } from 'react-router-dom' ;
import { Navigate } from 'react-router-dom-v5-compat' ;
import { Navigate , Routes , Route , useLocation } from 'react-router-dom-v5-compat' ;
import { DataSourcesRoutesContext } from 'app/features/datasources/state' ;
import { StoreState , useSelector } from 'app/types' ;
import { ROUTES } from './constants' ;
@ -32,39 +30,43 @@ export default function Connections() {
const isAddNewConnectionPageOverridden = Boolean ( navIndex [ 'standalone-plugin-page-/connections/add-new-connection' ] ) ;
return (
< DataSourcesRoutesContext.Provider
value = { {
New : ROUTES.DataSourcesNew ,
List : ROUTES.DataSources ,
Edit : ROUTES.DataSourcesEdit ,
Dashboards : ROUTES.DataSourcesDashboards ,
} }
>
< Switch >
{ /* Redirect to "Add new connection" by default */ }
< Route exact sensitive path = { ROUTES . Base } component = { ( ) = > < Navigate replace to = { ROUTES . AddNewConnection } / > } / >
< Route exact sensitive path = { ROUTES . DataSources } component = { DataSourcesListPage } / >
< Route exact sensitive path = { ROUTES . DataSourcesNew } component = { NewDataSourcePage } / >
< Route exact sensitive path = { ROUTES . DataSourcesDetails } component = { DataSourceDetailsPage } / >
< Route exact sensitive path = { ROUTES . DataSourcesEdit } component = { EditDataSourcePage } / >
< Route exact sensitive path = { ROUTES . DataSourcesDashboards } component = { DataSourceDashboardsPage } / >
{ /* "Add new connection" page - we don't register a route in case a plugin already registers a standalone page for it */ }
{ ! isAddNewConnectionPageOverridden && (
< Route exact sensitive path = { ROUTES . AddNewConnection } component = { AddNewConnectionPage } / >
) }
< Routes >
{ /* Redirect to "Add new connection" by default */ }
< Route caseSensitive path = { '/' } element = { < Navigate replace to = { ROUTES . AddNewConnection } / > } / >
{ /* The route paths need to be relative to the parent path (ROUTES.Base), so we need to remove that part */ }
< Route caseSensitive path = { ROUTES . DataSources . replace ( ROUTES . Base , '' ) } element = { < DataSourcesListPage / > } / >
< Route caseSensitive path = { ROUTES . DataSourcesNew . replace ( ROUTES . Base , '' ) } element = { < NewDataSourcePage / > } / >
< Route
caseSensitive
path = { ROUTES . DataSourcesDetails . replace ( ROUTES . Base , '' ) }
element = { < DataSourceDetailsPage / > }
/ >
< Route caseSensitive path = { ROUTES . DataSourcesEdit . replace ( ROUTES . Base , '' ) } element = { < EditDataSourcePage / > } / >
< Route
caseSensitive
path = { ROUTES . DataSourcesDashboards . replace ( ROUTES . Base , '' ) }
element = { < DataSourceDashboardsPage / > }
/ >
{ /* Redirect from earlier routes to updated routes */ }
< Route exact path = { ROUTES . ConnectDataOutdated } component = { RedirectToAddNewConnection } / >
{ /* "Add new connection" page - we don't register a route in case a plugin already registers a standalone page for it */ }
{ ! isAddNewConnectionPageOverridden && (
< Route
path = { ` ${ ROUTES . Base } /your-connections/:page ` }
component = { ( ) = > < Navigate replace to = { ` ${ ROUTES . Base } /:page ` } / > }
caseSensitive
path = { ROUTES . AddNewConnection . replace ( ROUTES . Base , '' ) }
element = { < AddNewConnectionPage / > }
/ >
< Route path = { ROUTES . YourConnectionsOutdated } component = { ( ) = > < Navigate replace to = { ROUTES . DataSources } / > } / >
) }
{ /* Redirect from earlier routes to updated routes */ }
< Route path = { ROUTES . ConnectDataOutdated . replace ( ROUTES . Base , '' ) } element = { < RedirectToAddNewConnection / > } / >
< Route path = { ` /your-connections/:page ` } element = { < Navigate replace to = { ` ${ ROUTES . Base } /:page ` } / > } / >
< Route
path = { ROUTES . YourConnectionsOutdated . replace ( ROUTES . Base , '' ) }
element = { < Navigate replace to = { ROUTES . DataSources } / > }
/ >
{ /* Not found */ }
< Route component = { ( ) = > < Navigate replace to = "/notfound" / > } / >
< / Switch >
< / DataSourcesRoutesContext.Provider >
{ /* Not found */ }
< Route element = { < Navigate replace to = "/notfound" / > } / >
< / Routes >
) ;
}