|
@@ -1,42 +1,66 @@
|
|
|
-import BaseBadge from 'sentry/components/idBadge/baseBadge';
|
|
|
-import MemberBadge from 'sentry/components/idBadge/memberBadge';
|
|
|
-import OrganizationBadge from 'sentry/components/idBadge/organizationBadge';
|
|
|
-import ProjectBadge from 'sentry/components/idBadge/projectBadge';
|
|
|
+import type {BaseBadgeProps} from 'sentry/components/idBadge/baseBadge';
|
|
|
+import MemberBadge, {MemberBadgeProps} from 'sentry/components/idBadge/memberBadge';
|
|
|
+import OrganizationBadge, {
|
|
|
+ OrganizationBadgeProps,
|
|
|
+} from 'sentry/components/idBadge/organizationBadge';
|
|
|
+import ProjectBadge, {ProjectBadgeProps} from 'sentry/components/idBadge/projectBadge';
|
|
|
import {TeamBadge} from 'sentry/components/idBadge/teamBadge';
|
|
|
-import UserBadge from 'sentry/components/idBadge/userBadge';
|
|
|
-import {Member, User} from 'sentry/types';
|
|
|
+import UserBadge, {UserBadgeProps} from 'sentry/components/idBadge/userBadge';
|
|
|
+
|
|
|
+import {TeamBadgeProps} from './teamBadge/badge';
|
|
|
|
|
|
-type BaseBadgeProps = React.ComponentProps<typeof BaseBadge>;
|
|
|
type DisplayName = BaseBadgeProps['displayName'];
|
|
|
|
|
|
-interface Props extends Omit<BaseBadgeProps, 'displayName'> {
|
|
|
+interface AddedBaseBadgeProps {
|
|
|
displayName?: DisplayName;
|
|
|
- member?: Member;
|
|
|
- user?: User;
|
|
|
}
|
|
|
+interface GetOrganizationBadgeProps
|
|
|
+ extends AddedBaseBadgeProps,
|
|
|
+ Omit<BaseBadgeProps, 'displayName' | 'organization'>,
|
|
|
+ OrganizationBadgeProps {}
|
|
|
+
|
|
|
+interface GetMemberBadgeProps
|
|
|
+ extends Omit<BaseBadgeProps, 'displayName' | 'member'>,
|
|
|
+ AddedBaseBadgeProps,
|
|
|
+ MemberBadgeProps {}
|
|
|
+
|
|
|
+interface GetUserBadgeProps
|
|
|
+ extends Omit<BaseBadgeProps, 'displayName' | 'user'>,
|
|
|
+ UserBadgeProps,
|
|
|
+ AddedBaseBadgeProps {}
|
|
|
+
|
|
|
+interface GetTeamBadgeProps
|
|
|
+ extends Omit<BaseBadgeProps, 'displayName' | 'team'>,
|
|
|
+ TeamBadgeProps,
|
|
|
+ AddedBaseBadgeProps {}
|
|
|
+
|
|
|
+interface GetProjectBadgeProps
|
|
|
+ extends Omit<BaseBadgeProps, 'displayName' | 'project'>,
|
|
|
+ ProjectBadgeProps,
|
|
|
+ AddedBaseBadgeProps {}
|
|
|
+
|
|
|
+export type GetBadgeProps =
|
|
|
+ | GetOrganizationBadgeProps
|
|
|
+ | GetTeamBadgeProps
|
|
|
+ | GetProjectBadgeProps
|
|
|
+ | GetUserBadgeProps
|
|
|
+ | GetMemberBadgeProps;
|
|
|
|
|
|
-function getBadge({
|
|
|
- organization,
|
|
|
- team,
|
|
|
- project,
|
|
|
- user,
|
|
|
- member,
|
|
|
- ...props
|
|
|
-}: Props): React.ReactElement | null {
|
|
|
- if (organization) {
|
|
|
- return <OrganizationBadge organization={organization} {...props} />;
|
|
|
+function getBadge(props): React.ReactElement | null {
|
|
|
+ if (props.organization) {
|
|
|
+ return <OrganizationBadge {...props} />;
|
|
|
}
|
|
|
- if (team) {
|
|
|
- return <TeamBadge team={team} {...props} />;
|
|
|
+ if (props.team) {
|
|
|
+ return <TeamBadge {...props} />;
|
|
|
}
|
|
|
- if (project) {
|
|
|
- return <ProjectBadge project={project} {...props} />;
|
|
|
+ if (props.project) {
|
|
|
+ return <ProjectBadge {...props} />;
|
|
|
}
|
|
|
- if (user) {
|
|
|
- return <UserBadge user={user} {...props} />;
|
|
|
+ if (props.user) {
|
|
|
+ return <UserBadge {...props} />;
|
|
|
}
|
|
|
- if (member) {
|
|
|
- return <MemberBadge member={member} {...props} />;
|
|
|
+ if (props.member) {
|
|
|
+ return <MemberBadge {...props} />;
|
|
|
}
|
|
|
|
|
|
return null;
|