getBadge.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import * as React from 'react';
  2. import BaseBadge from 'sentry/components/idBadge/baseBadge';
  3. import MemberBadge from 'sentry/components/idBadge/memberBadge';
  4. import OrganizationBadge from 'sentry/components/idBadge/organizationBadge';
  5. import ProjectBadge from 'sentry/components/idBadge/projectBadge';
  6. import {TeamBadge} from 'sentry/components/idBadge/teamBadge';
  7. import UserBadge from 'sentry/components/idBadge/userBadge';
  8. import {Member, User} from 'sentry/types';
  9. type BaseBadgeProps = React.ComponentProps<typeof BaseBadge>;
  10. type DisplayName = BaseBadgeProps['displayName'];
  11. type Props = Omit<BaseBadgeProps, 'displayName'> & {
  12. displayName?: DisplayName;
  13. member?: Member;
  14. user?: User;
  15. };
  16. function getBadge({
  17. organization,
  18. team,
  19. project,
  20. user,
  21. member,
  22. ...props
  23. }: Props): React.ReactElement | null {
  24. if (organization) {
  25. return <OrganizationBadge organization={organization} {...props} />;
  26. }
  27. if (team) {
  28. return <TeamBadge team={team} {...props} />;
  29. }
  30. if (project) {
  31. return <ProjectBadge project={project} {...props} />;
  32. }
  33. if (user) {
  34. return <UserBadge user={user} {...props} />;
  35. }
  36. if (member) {
  37. return <MemberBadge member={member} {...props} />;
  38. }
  39. return null;
  40. }
  41. export default getBadge;