2024-10-15 21:10:31 +08:00
|
|
|
import { Navigate, Routes, Route, useLocation } from 'react-router-dom-v5-compat';
|
2022-11-10 18:14:23 +08:00
|
|
|
|
2025-07-09 12:15:33 +08:00
|
|
|
import { StoreState, useSelector } from 'app/types/store';
|
2022-11-10 18:14:23 +08:00
|
|
|
|
2025-10-06 19:46:47 +08:00
|
|
|
import { isOpenSourceBuildOrUnlicenced } from '../admin/EnterpriseAuthFeaturesCard';
|
|
|
|
|
2022-11-10 18:14:23 +08:00
|
|
|
import { ROUTES } from './constants';
|
2025-07-07 15:23:27 +08:00
|
|
|
import { AddNewConnectionPage } from './pages/AddNewConnectionPage';
|
2025-10-06 19:46:47 +08:00
|
|
|
import { CacheFeatureHighlightPage } from './pages/CacheFeatureHighlightPage';
|
2025-08-05 20:42:05 +08:00
|
|
|
import ConnectionsHomePage from './pages/ConnectionsHomePage';
|
2025-07-07 15:23:27 +08:00
|
|
|
import { DataSourceDashboardsPage } from './pages/DataSourceDashboardsPage';
|
|
|
|
import { DataSourceDetailsPage } from './pages/DataSourceDetailsPage';
|
|
|
|
import { DataSourcesListPage } from './pages/DataSourcesListPage';
|
|
|
|
import { EditDataSourcePage } from './pages/EditDataSourcePage';
|
2025-10-06 19:46:47 +08:00
|
|
|
import { InsightsFeatureHighlightPage } from './pages/InsightsFeatureHighlightPage';
|
2025-07-07 15:23:27 +08:00
|
|
|
import { NewDataSourcePage } from './pages/NewDataSourcePage';
|
2025-10-06 19:46:47 +08:00
|
|
|
import { PermissionsFeatureHighlightPage } from './pages/PermissionsFeatureHighlightPage';
|
2022-11-10 18:14:23 +08:00
|
|
|
|
2023-08-21 21:58:02 +08:00
|
|
|
function RedirectToAddNewConnection() {
|
|
|
|
const { search } = useLocation();
|
|
|
|
return (
|
2024-10-02 14:44:18 +08:00
|
|
|
<Navigate
|
|
|
|
replace
|
2023-08-21 21:58:02 +08:00
|
|
|
to={{
|
|
|
|
pathname: ROUTES.AddNewConnection,
|
|
|
|
search,
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2022-11-10 18:14:23 +08:00
|
|
|
export default function Connections() {
|
|
|
|
const navIndex = useSelector((state: StoreState) => state.navIndex);
|
2023-05-02 16:51:59 +08:00
|
|
|
const isAddNewConnectionPageOverridden = Boolean(navIndex['standalone-plugin-page-/connections/add-new-connection']);
|
2025-10-06 19:46:47 +08:00
|
|
|
const shouldEnableFeatureHighlights = isOpenSourceBuildOrUnlicenced();
|
2023-03-01 15:23:08 +08:00
|
|
|
|
2022-11-10 18:14:23 +08:00
|
|
|
return (
|
2024-10-15 21:10:31 +08:00
|
|
|
<Routes>
|
|
|
|
{/* Redirect to "Add new connection" by default */}
|
2025-08-05 20:42:05 +08:00
|
|
|
<Route caseSensitive path={'/'} element={<ConnectionsHomePage />} />
|
2024-10-15 21:10:31 +08:00
|
|
|
{/* 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 />} />
|
2025-10-06 19:46:47 +08:00
|
|
|
|
|
|
|
{shouldEnableFeatureHighlights && (
|
|
|
|
<>
|
|
|
|
<Route
|
|
|
|
caseSensitive
|
|
|
|
path={ROUTES.DataSourcesEdit.replace(ROUTES.Base, '') + '/permissions'}
|
|
|
|
element={<PermissionsFeatureHighlightPage />}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
caseSensitive
|
|
|
|
path={ROUTES.DataSourcesEdit.replace(ROUTES.Base, '') + '/insights'}
|
|
|
|
element={<InsightsFeatureHighlightPage />}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
caseSensitive
|
|
|
|
path={ROUTES.DataSourcesEdit.replace(ROUTES.Base, '') + '/cache'}
|
|
|
|
element={<CacheFeatureHighlightPage />}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
|
2024-10-15 21:10:31 +08:00
|
|
|
<Route
|
|
|
|
caseSensitive
|
|
|
|
path={ROUTES.DataSourcesDashboards.replace(ROUTES.Base, '')}
|
|
|
|
element={<DataSourceDashboardsPage />}
|
|
|
|
/>
|
2023-02-03 16:00:30 +08:00
|
|
|
|
2024-10-15 21:10:31 +08:00
|
|
|
{/* "Add new connection" page - we don't register a route in case a plugin already registers a standalone page for it */}
|
|
|
|
{!isAddNewConnectionPageOverridden && (
|
2024-10-02 14:44:18 +08:00
|
|
|
<Route
|
2024-10-15 21:10:31 +08:00
|
|
|
caseSensitive
|
|
|
|
path={ROUTES.AddNewConnection.replace(ROUTES.Base, '')}
|
|
|
|
element={<AddNewConnectionPage />}
|
2024-10-02 14:44:18 +08:00
|
|
|
/>
|
2024-10-15 21:10:31 +08:00
|
|
|
)}
|
|
|
|
|
|
|
|
{/* 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} />}
|
|
|
|
/>
|
2023-08-21 21:58:02 +08:00
|
|
|
|
2024-10-15 21:10:31 +08:00
|
|
|
{/* Not found */}
|
|
|
|
<Route element={<Navigate replace to="/notfound" />} />
|
|
|
|
</Routes>
|
2022-11-10 18:14:23 +08:00
|
|
|
);
|
|
|
|
}
|