mobilePageHeader.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import normalizeUrl from 'sentry/utils/url/normalizeUrl';
  2. import useOrganization from 'sentry/utils/useOrganization';
  3. import {
  4. DomainViewHeader,
  5. type Props as HeaderProps,
  6. } from 'sentry/views/insights/pages/domainViewHeader';
  7. import {
  8. MOBILE_LANDING_SUB_PATH,
  9. MOBILE_LANDING_TITLE,
  10. } from 'sentry/views/insights/pages/mobile/settings';
  11. import {DOMAIN_VIEW_BASE_URL} from 'sentry/views/insights/pages/settings';
  12. import {isModuleEnabled} from 'sentry/views/insights/pages/utils';
  13. import {ModuleName} from 'sentry/views/insights/types';
  14. type Props = {
  15. breadcrumbs?: HeaderProps['additionalBreadCrumbs'];
  16. headerActions?: HeaderProps['additonalHeaderActions'];
  17. headerTitle?: HeaderProps['headerTitle'];
  18. hideDefaultTabs?: HeaderProps['hideDefaultTabs'];
  19. module?: HeaderProps['selectedModule'];
  20. tabs?: HeaderProps['tabs'];
  21. };
  22. export function MobileHeader({
  23. module,
  24. hideDefaultTabs,
  25. headerActions,
  26. headerTitle,
  27. tabs,
  28. breadcrumbs,
  29. }: Props) {
  30. const organization = useOrganization();
  31. const mobileBaseUrl = normalizeUrl(
  32. `/organizations/${organization.slug}/${DOMAIN_VIEW_BASE_URL}/${MOBILE_LANDING_SUB_PATH}/`
  33. );
  34. const hasMobileScreens = isModuleEnabled(ModuleName.MOBILE_VITALS, organization);
  35. const hasMobileUi = isModuleEnabled(ModuleName.MOBILE_UI, organization);
  36. const modules = hasMobileScreens
  37. ? [ModuleName.MOBILE_VITALS, ModuleName.HTTP]
  38. : [
  39. ModuleName.APP_START,
  40. ModuleName.SCREEN_LOAD,
  41. ModuleName.SCREEN_RENDERING,
  42. ModuleName.HTTP,
  43. ];
  44. if (!hasMobileScreens && hasMobileUi) {
  45. modules.push(ModuleName.MOBILE_UI);
  46. }
  47. return (
  48. <DomainViewHeader
  49. domainBaseUrl={mobileBaseUrl}
  50. domainTitle={MOBILE_LANDING_TITLE}
  51. headerTitle={headerTitle}
  52. modules={modules}
  53. selectedModule={module}
  54. tabs={tabs}
  55. hideDefaultTabs={hideDefaultTabs}
  56. additonalHeaderActions={headerActions}
  57. additionalBreadCrumbs={breadcrumbs}
  58. />
  59. );
  60. }