deployBadge.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import Link from 'sentry/components/links/link';
  2. import Tag from 'sentry/components/tag';
  3. import {t} from 'sentry/locale';
  4. import {Deploy} from 'sentry/types';
  5. import {MutableSearch} from 'sentry/utils/tokenizeSearch';
  6. type Props = {
  7. deploy: Deploy;
  8. className?: string;
  9. orgSlug?: string;
  10. projectId?: number;
  11. version?: string;
  12. };
  13. const DeployBadge = ({deploy, orgSlug, projectId, version, className}: Props) => {
  14. const shouldLinkToIssues = !!orgSlug && !!version;
  15. const badge = (
  16. <Tag
  17. className={className}
  18. type="highlight"
  19. textMaxWidth={80}
  20. tooltipText={shouldLinkToIssues ? t('Open In Issues') : undefined}
  21. >
  22. {deploy.environment}
  23. </Tag>
  24. );
  25. if (!shouldLinkToIssues) {
  26. return badge;
  27. }
  28. return (
  29. <Link
  30. to={{
  31. pathname: `/organizations/${orgSlug}/issues/`,
  32. query: {
  33. project: projectId ?? null,
  34. environment: deploy.environment,
  35. query: new MutableSearch([`release:${version!}`]).formatString(),
  36. },
  37. }}
  38. >
  39. {badge}
  40. </Link>
  41. );
  42. };
  43. export default DeployBadge;