import styled from '@emotion/styled';
import ProjectAvatar from 'sentry/components/avatar/projectAvatar';
import {
CrumbContainer,
EventDrawerBody,
EventDrawerContainer,
EventDrawerHeader,
EventNavigator,
Header,
NavigationCrumbs,
ShortId,
} from 'sentry/components/events/eventDrawer';
import LoadingError from 'sentry/components/loadingError';
import Pagination from 'sentry/components/pagination';
import {t} from 'sentry/locale';
import {space} from 'sentry/styles/space';
import type {IssueAttachment} from 'sentry/types/group';
import type {Project} from 'sentry/types/project';
import {useLocation} from 'sentry/utils/useLocation';
import useOrganization from 'sentry/utils/useOrganization';
import GroupEventAttachmentsFilter, {
EventAttachmentFilter,
} from './groupEventAttachmentsFilter';
import GroupEventAttachmentsTable from './groupEventAttachmentsTable';
import {useDeleteGroupEventAttachment} from './useDeleteGroupEventAttachment';
import {useGroupEventAttachments} from './useGroupEventAttachments';
type GroupEventAttachmentsProps = {
groupId: string;
project: Project;
};
export function GroupEventAttachmentsDrawer({
project,
groupId,
}: GroupEventAttachmentsProps) {
const location = useLocation();
const organization = useOrganization();
const activeAttachmentsTab =
(location.query.attachmentFilter as EventAttachmentFilter | undefined) ??
EventAttachmentFilter.ALL;
const {attachments, isPending, isError, getResponseHeader, refetch} =
useGroupEventAttachments({
groupId,
activeAttachmentsTab,
});
const {mutate: deleteAttachment} = useDeleteGroupEventAttachment();
const handleDelete = (attachment: IssueAttachment) => {
deleteAttachment({
attachment,
groupId,
orgSlug: organization.slug,
activeAttachmentsTab,
projectSlug: project.slug,
cursor: location.query.cursor as string | undefined,
environment: location.query.environment as string[] | string | undefined,
});
};
const renderAttachmentsTable = () => {
if (isError) {
return ;
}
return (
);
};
return (
{groupId}
),
},
{label: t('Attachments')},
]}
/>
{/* TODO(issue-details-streamline): Bring back a grid for screenshots */}
{renderAttachmentsTable()}
);
}
const NoMarginPagination = styled(Pagination)`
margin: 0;
`;
const Wrapper = styled('div')`
display: flex;
flex-direction: column;
gap: ${space(2)};
`;