From 54b1d089aea2eeeffb6c1017ca90ad03d1de1081 Mon Sep 17 00:00:00 2001 From: Sachin Chaurasiya Date: Wed, 7 Feb 2024 15:07:51 +0530 Subject: [PATCH] Minor: add application router class (#15069) * Minor: add application router class * Refactor route elements in AuthenticatedAppRouter * Add test for ApplicationRoutesClassBase --- .../src/main/resources/ui/src/App.tsx | 10 ++----- .../AppRouter/AuthenticatedAppRouter.tsx | 6 ++-- .../ApplicationConfigProvider.tsx | 5 ---- .../utils/ApplicationRoutesClassBase.test.ts | 28 +++++++++++++++++++ .../src/utils/ApplicationRoutesClassBase.ts | 26 +++++++++++++++++ 5 files changed, 60 insertions(+), 15 deletions(-) create mode 100644 openmetadata-ui/src/main/resources/ui/src/utils/ApplicationRoutesClassBase.test.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/utils/ApplicationRoutesClassBase.ts diff --git a/openmetadata-ui/src/main/resources/ui/src/App.tsx b/openmetadata-ui/src/main/resources/ui/src/App.tsx index 3c923647cdc2..1c2f5e40e543 100644 --- a/openmetadata-ui/src/main/resources/ui/src/App.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/App.tsx @@ -11,7 +11,7 @@ * limitations under the License. */ -import React, { FC, ReactNode } from 'react'; +import React, { FC } from 'react'; import { HelmetProvider } from 'react-helmet-async'; import { I18nextProvider } from 'react-i18next'; import { Router } from 'react-router-dom'; @@ -34,11 +34,7 @@ import { TOAST_OPTIONS } from './constants/Toasts.constants'; import { history } from './utils/HistoryUtils'; import i18n from './utils/i18next/LocalUtil'; -interface AppProps { - routeElements?: ReactNode; -} - -const App: FC = ({ routeElements }) => { +const App: FC = () => { return (
@@ -46,7 +42,7 @@ const App: FC = ({ routeElements }) => { - + diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AppRouter/AuthenticatedAppRouter.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AppRouter/AuthenticatedAppRouter.tsx index 1b61080b03ef..a19a22b541a2 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AppRouter/AuthenticatedAppRouter.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/AppRouter/AuthenticatedAppRouter.tsx @@ -29,13 +29,13 @@ import { CustomPageSettings } from '../../pages/CustomPageSettings/CustomPageSet import DataQualityPage from '../../pages/DataQuality/DataQualityPage'; import { PersonaDetailsPage } from '../../pages/Persona/PersonaDetailsPage/PersonaDetailsPage'; import { PersonaPage } from '../../pages/Persona/PersonaListPage/PersonaPage'; +import applicationRoutesClass from '../../utils/ApplicationRoutesClassBase'; import { checkPermission, userPermissions } from '../../utils/PermissionsUtils'; import { getSettingCategoryPath, getSettingPath, getTeamsWithFqnPath, } from '../../utils/RouterUtils'; -import { useApplicationConfigContext } from '../ApplicationConfigProvider/ApplicationConfigProvider'; import { usePermissionProvider } from '../PermissionProvider/PermissionProvider'; import { ResourceEntity } from '../PermissionProvider/PermissionProvider.interface'; import AdminProtectedRoute from './AdminProtectedRoute'; @@ -507,7 +507,7 @@ const ApplicationPageV1 = withSuspenseFallback( const AuthenticatedAppRouter: FunctionComponent = () => { const { permissions } = usePermissionProvider(); - const { routeElements } = useApplicationConfigContext(); + const RouteElements = applicationRoutesClass.getRouteElements(); const glossaryPermission = useMemo( () => @@ -1340,7 +1340,7 @@ const AuthenticatedAppRouter: FunctionComponent = () => { GlobalSettingsMenuCategory.CUSTOM_PROPERTIES )} /> - {routeElements} + {RouteElements && } ; updateUserProfilePics: (data: { id: string; user: User }) => void; cachedEntityData: Record; @@ -67,12 +66,10 @@ export const useApplicationConfigContext = () => interface ApplicationConfigProviderProps { children: ReactNode; - routeElements?: ReactNode; } const ApplicationConfigProvider: FC = ({ children, - routeElements, }) => { const location = useLocation(); const [applicationConfig, setApplicationConfig] = useState( @@ -153,7 +150,6 @@ const ApplicationConfigProvider: FC = ({ const contextValue = useMemo( () => ({ ...applicationConfig, - routeElements, selectedPersona, updateSelectedPersona, userProfilePics, @@ -164,7 +160,6 @@ const ApplicationConfigProvider: FC = ({ }), [ applicationConfig, - routeElements, selectedPersona, updateSelectedPersona, userProfilePics, diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/ApplicationRoutesClassBase.test.ts b/openmetadata-ui/src/main/resources/ui/src/utils/ApplicationRoutesClassBase.test.ts new file mode 100644 index 000000000000..08298cd40df3 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/utils/ApplicationRoutesClassBase.test.ts @@ -0,0 +1,28 @@ +/* + * Copyright 2024 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { FC } from 'react'; +import { ApplicationRoutesClassBase } from './ApplicationRoutesClassBase'; + +describe('ApplicationRoutesClassCollate', () => { + let applicationRoutesClassBase: ApplicationRoutesClassBase; + + beforeEach(() => { + applicationRoutesClassBase = new ApplicationRoutesClassBase(); + }); + + it('should return CollateRouter from getRouteElements', () => { + const result: FC | null = applicationRoutesClassBase.getRouteElements(); + + expect(result).toBeNull(); + }); +}); diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/ApplicationRoutesClassBase.ts b/openmetadata-ui/src/main/resources/ui/src/utils/ApplicationRoutesClassBase.ts new file mode 100644 index 000000000000..1e760711cf53 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/utils/ApplicationRoutesClassBase.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2024 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { FC } from 'react'; + +class ApplicationRoutesClassBase { + public getRouteElements(): FC | null { + return null; + } +} + +const applicationRoutesClass = new ApplicationRoutesClassBase(); + +export default applicationRoutesClass; + +export { ApplicationRoutesClassBase };