useModuleBreadcrumbs.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import type {Crumb} from 'sentry/components/breadcrumbs';
  2. import useOrganization from 'sentry/utils/useOrganization';
  3. import {normalizeUrl} from 'sentry/utils/withDomainRequired';
  4. import {INSIGHTS_BASE_URL, INSIGHTS_LABEL} from 'sentry/views/performance/settings';
  5. import {useModuleTitle} from 'sentry/views/performance/utils/useModuleTitle';
  6. import {useModuleURL} from 'sentry/views/performance/utils/useModuleURL';
  7. import {ModuleName} from 'sentry/views/starfish/types';
  8. type ModuleNameStrings = `${ModuleName}`;
  9. type RoutableModuleNames = Exclude<ModuleNameStrings, '' | 'other'>;
  10. export function useModuleBreadcrumbs(moduleName: RoutableModuleNames): Crumb[] {
  11. const organization = useOrganization();
  12. const moduleLabel = useModuleTitle(moduleName);
  13. const moduleTo = useModuleURL(moduleName);
  14. // AI Modules lives outside of Performance right now
  15. if (moduleName === ModuleName.AI) {
  16. return [
  17. {
  18. label: moduleLabel,
  19. to: moduleTo,
  20. preservePageFilters: true,
  21. },
  22. ];
  23. }
  24. return [
  25. {
  26. label: INSIGHTS_LABEL,
  27. to: normalizeUrl(`/organizations/${organization.slug}${INSIGHTS_BASE_URL}/`),
  28. preservePageFilters: true,
  29. },
  30. {
  31. label: moduleLabel,
  32. to: moduleTo,
  33. preservePageFilters: true,
  34. },
  35. ];
  36. }