modulePageProviders.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import type {ComponentProps} from 'react';
  2. import Feature from 'sentry/components/acl/feature';
  3. import * as Layout from 'sentry/components/layouts/thirds';
  4. import PageFiltersContainer from 'sentry/components/organizations/pageFilters/container';
  5. import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
  6. import useOrganization from 'sentry/utils/useOrganization';
  7. import {NoAccess} from 'sentry/views/performance/database/noAccess';
  8. import {RoutingContextProvider} from 'sentry/views/starfish/utils/routingContext';
  9. interface Props {
  10. baseURL: string;
  11. children: React.ReactNode;
  12. features: ComponentProps<typeof Feature>['features'];
  13. title: string;
  14. }
  15. export function ModulePageProviders({title, children, features, baseURL}: Props) {
  16. const organization = useOrganization();
  17. return (
  18. <RoutingContextProvider value={{baseURL: baseURL}}>
  19. <PageFiltersContainer>
  20. <SentryDocumentTitle title={title} orgSlug={organization.slug}>
  21. <Layout.Page>
  22. <Feature
  23. features={features}
  24. organization={organization}
  25. renderDisabled={NoAccess}
  26. >
  27. {children}
  28. </Feature>
  29. </Layout.Page>
  30. </SentryDocumentTitle>
  31. </PageFiltersContainer>
  32. </RoutingContextProvider>
  33. );
  34. }