import styled from '@emotion/styled'; import {openCreateOwnershipRule} from 'sentry/actionCreators/modal'; import Access from 'sentry/components/acl/access'; import ActorAvatar from 'sentry/components/avatar/actorAvatar'; import Button from 'sentry/components/button'; import Link from 'sentry/components/links/link'; import QuestionTooltip from 'sentry/components/questionTooltip'; import * as SidebarSection from 'sentry/components/sidebarSection'; import {IconAdd, IconSettings, IconUser} from 'sentry/icons'; import {t} from 'sentry/locale'; import MemberListStore from 'sentry/stores/memberListStore'; import {useLegacyStore} from 'sentry/stores/useLegacyStore'; import space from 'sentry/styles/space'; import type {Actor, Group, Organization, Project} from 'sentry/types'; import {buildTeamId} from 'sentry/utils'; interface OwnedByProps { group: Group; organization: Organization; project: Project; } function OwnedBy({group, project, organization}: OwnedByProps) { const memberList = useLegacyStore(MemberListStore); const owner = group.owners?.find(({type}) => ['codeowners', 'ownershipRule'].includes(type) ); let currentOwner: Actor | undefined; // converts a backend suggested owner to a suggested assignee if (owner) { const [ownerType, id] = owner.owner.split(':'); if (ownerType === 'user') { const member = memberList.find(user => user.id === id); if (member) { currentOwner = { type: 'user', id, name: member.name, }; } } else if (ownerType === 'team') { const teams = project?.teams ?? []; const team = teams.find(({id: teamId}) => buildTeamId(teamId) === owner.owner); if (team) { currentOwner = { type: 'team', id, name: team.slug, }; } } } return ( {t('Owned By')}