getBadge.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import type {BaseBadgeProps} from 'sentry/components/idBadge/baseBadge';
  2. import MemberBadge, {MemberBadgeProps} from 'sentry/components/idBadge/memberBadge';
  3. import OrganizationBadge, {
  4. OrganizationBadgeProps,
  5. } from 'sentry/components/idBadge/organizationBadge';
  6. import ProjectBadge, {ProjectBadgeProps} from 'sentry/components/idBadge/projectBadge';
  7. import {TeamBadge} from 'sentry/components/idBadge/teamBadge';
  8. import UserBadge, {UserBadgeProps} from 'sentry/components/idBadge/userBadge';
  9. import {TeamBadgeProps} from './teamBadge/badge';
  10. type DisplayName = BaseBadgeProps['displayName'];
  11. interface AddedBaseBadgeProps {
  12. displayName?: DisplayName;
  13. }
  14. interface GetOrganizationBadgeProps
  15. extends AddedBaseBadgeProps,
  16. Omit<BaseBadgeProps, 'displayName' | 'organization'>,
  17. OrganizationBadgeProps {}
  18. interface GetMemberBadgeProps
  19. extends Omit<BaseBadgeProps, 'displayName' | 'member'>,
  20. AddedBaseBadgeProps,
  21. MemberBadgeProps {}
  22. interface GetUserBadgeProps
  23. extends Omit<BaseBadgeProps, 'displayName' | 'user'>,
  24. UserBadgeProps,
  25. AddedBaseBadgeProps {}
  26. interface GetTeamBadgeProps
  27. extends Omit<BaseBadgeProps, 'displayName' | 'team'>,
  28. TeamBadgeProps,
  29. AddedBaseBadgeProps {}
  30. interface GetProjectBadgeProps
  31. extends Omit<BaseBadgeProps, 'displayName' | 'project'>,
  32. ProjectBadgeProps,
  33. AddedBaseBadgeProps {}
  34. export type GetBadgeProps =
  35. | GetOrganizationBadgeProps
  36. | GetTeamBadgeProps
  37. | GetProjectBadgeProps
  38. | GetUserBadgeProps
  39. | GetMemberBadgeProps;
  40. function getBadge(props): React.ReactElement | null {
  41. if (props.organization) {
  42. return <OrganizationBadge {...props} />;
  43. }
  44. if (props.team) {
  45. return <TeamBadge {...props} />;
  46. }
  47. if (props.project) {
  48. return <ProjectBadge {...props} />;
  49. }
  50. if (props.user) {
  51. return <UserBadge {...props} />;
  52. }
  53. if (props.member) {
  54. return <MemberBadge {...props} />;
  55. }
  56. return null;
  57. }
  58. export default getBadge;