123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import {useEffect} from 'react';
- import {fetchOrgMembers} from 'sentry/actionCreators/members';
- import {getOwnerList} from 'sentry/components/group/assignedTo';
- import {
- AssigneeSelector,
- useHandleAssigneeChange,
- } from 'sentry/components/group/assigneeSelector';
- import type {Event} from 'sentry/types/event';
- import type {Group} from 'sentry/types/group';
- import type {Project} from 'sentry/types/project';
- import useApi from 'sentry/utils/useApi';
- import useCommitters from 'sentry/utils/useCommitters';
- import {useIssueEventOwners} from 'sentry/utils/useIssueEventOwners';
- import useOrganization from 'sentry/utils/useOrganization';
- interface GroupHeaderAssigneeSelectorProps {
- event: Event | null;
- group: Group;
- project: Project;
- }
- export function GroupHeaderAssigneeSelector({
- group,
- project,
- event,
- }: GroupHeaderAssigneeSelectorProps) {
- const api = useApi();
- const organization = useOrganization();
- const {handleAssigneeChange, assigneeLoading} = useHandleAssigneeChange({
- organization,
- group,
- });
- const {data: eventOwners} = useIssueEventOwners({
- eventId: event?.id ?? '',
- projectSlug: project.slug,
- });
- const {data: committersResponse} = useCommitters({
- eventId: event?.id ?? '',
- projectSlug: project.slug,
- group,
- });
- useEffect(() => {
- // TODO: We should check if this is already loaded
- fetchOrgMembers(api, organization.slug, [project.id]);
- }, [api, organization, project]);
- const owners = getOwnerList(
- committersResponse?.committers ?? [],
- eventOwners,
- group.assignedTo
- );
- return (
- <AssigneeSelector
- group={group}
- owners={owners}
- assigneeLoading={assigneeLoading}
- handleAssigneeChange={handleAssigneeChange}
- />
- );
- }
|