import React from 'react'; import { Redirect, Route, Switch } from 'react-router-dom'; import { AnalyticsPage } from '@app/analyticsDashboard/components/AnalyticsPage'; import { BrowseResultsPage } from '@app/browse/BrowseResultsPage'; import { BusinessAttributes } from '@app/businessAttribute/BusinessAttributes'; import { useUserContext } from '@app/context/useUserContext'; import DomainRoutes from '@app/domain/DomainRoutes'; import { ManageDomainsPage } from '@app/domain/ManageDomainsPage'; import DomainRoutesV2 from '@app/domainV2/DomainRoutes'; import { ManageDomainsPage as ManageDomainsPageV2 } from '@app/domainV2/ManageDomainsPage'; import { EntityPage } from '@app/entity/EntityPage'; import { EntityPage as EntityPageV2 } from '@app/entityV2/EntityPage'; import GlossaryRoutes from '@app/glossary/GlossaryRoutes'; import GlossaryRoutesV2 from '@app/glossaryV2/GlossaryRoutes'; import StructuredProperties from '@app/govern/structuredProperties/StructuredProperties'; import { ManageIngestionPage } from '@app/ingest/ManageIngestionPage'; import { ManageIngestionPage as ManageIngestionPageV2 } from '@app/ingestV2/ManageIngestionPage'; import { SearchPage } from '@app/search/SearchPage'; import { SearchablePage } from '@app/search/SearchablePage'; import { SearchPage as SearchPageV2 } from '@app/searchV2/SearchPage'; import { SearchablePage as SearchablePageV2 } from '@app/searchV2/SearchablePage'; import { SettingsPage } from '@app/settings/SettingsPage'; import { SettingsPage as SettingsPageV2 } from '@app/settingsV2/SettingsPage'; import { NoPageFound } from '@app/shared/NoPageFound'; import { ManageTags } from '@app/tags/ManageTags'; import { useAppConfig, useBusinessAttributesFlag, useIsAppConfigContextLoaded, useIsNestedDomainsEnabled, } from '@app/useAppConfig'; import { useEntityRegistry } from '@app/useEntityRegistry'; import { useIsThemeV2 } from '@app/useIsThemeV2'; import { PageRoutes } from '@conf/Global'; /** * Container for all searchable page routes */ export const SearchRoutes = (): JSX.Element => { const entityRegistry = useEntityRegistry(); const me = useUserContext(); const isNestedDomainsEnabled = useIsNestedDomainsEnabled(); const entities = isNestedDomainsEnabled ? entityRegistry.getEntitiesForSearchRoutes() : entityRegistry.getNonGlossaryEntities(); const { config, loaded } = useAppConfig(); const isThemeV2 = useIsThemeV2(); const FinalSearchablePage = isThemeV2 ? SearchablePageV2 : SearchablePage; const businessAttributesFlag = useBusinessAttributesFlag(); const appConfigContextLoaded = useIsAppConfigContextLoaded(); const showStructuredProperties = config?.featureFlags?.showManageStructuredProperties && (me.platformPrivileges?.manageStructuredProperties || me.platformPrivileges?.viewStructuredPropertiesPage); const showTags = config?.featureFlags?.showManageTags && (me.platformPrivileges?.manageTags || me.platformPrivileges?.viewManageTags); const showIngestV2 = config.featureFlags.showIngestionPageRedesign; return ( {entities.map((entity) => ( isThemeV2 ? ( ) : ( ) } /> ))} (isThemeV2 ? : )} /> } /> {showTags ? } /> : null} } /> } /> } /> } /> } /> {isNestedDomainsEnabled && ( (isThemeV2 ? : )} /> )} {!isNestedDomainsEnabled && ( (isThemeV2 ? : )} /> )} {!showIngestV2 && } />} {showIngestV2 && } />} (isThemeV2 ? : )} /> (isThemeV2 ? : )} /> {showStructuredProperties && ( } /> )} { if (!appConfigContextLoaded) { return null; } if (businessAttributesFlag) { return ; } return ; }} /> {me.loaded && loaded && } ); };