index.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import {Fragment} from 'react';
  2. import styled from '@emotion/styled';
  3. import {Organization, Project} from 'sentry/types';
  4. import {ImageCandidate} from 'sentry/types/debugImage';
  5. import {INTERNAL_SOURCE} from '../utils';
  6. import StatusTooltip from './status/statusTooltip';
  7. import Actions from './actions';
  8. import Information from './information';
  9. type Props = {
  10. baseUrl: string;
  11. candidate: ImageCandidate;
  12. hasReprocessWarning: boolean;
  13. haveCandidatesAtLeastOneAction: boolean;
  14. onDelete: (debugFileId: string) => void;
  15. organization: Organization;
  16. projSlug: Project['slug'];
  17. eventDateReceived?: string;
  18. };
  19. function Candidate({
  20. candidate,
  21. organization,
  22. projSlug,
  23. baseUrl,
  24. haveCandidatesAtLeastOneAction,
  25. hasReprocessWarning,
  26. onDelete,
  27. eventDateReceived,
  28. }: Props) {
  29. const {source} = candidate;
  30. const isInternalSource = source === INTERNAL_SOURCE;
  31. return (
  32. <Fragment>
  33. <Column>
  34. <StatusTooltip candidate={candidate} hasReprocessWarning={hasReprocessWarning} />
  35. </Column>
  36. <InformationColumn>
  37. <Information
  38. candidate={candidate}
  39. isInternalSource={isInternalSource}
  40. eventDateReceived={eventDateReceived}
  41. hasReprocessWarning={hasReprocessWarning}
  42. />
  43. </InformationColumn>
  44. {haveCandidatesAtLeastOneAction && (
  45. <ActionsColumn>
  46. <Actions
  47. onDelete={onDelete}
  48. baseUrl={baseUrl}
  49. projSlug={projSlug}
  50. organization={organization}
  51. candidate={candidate}
  52. isInternalSource={isInternalSource}
  53. />
  54. </ActionsColumn>
  55. )}
  56. </Fragment>
  57. );
  58. }
  59. export default Candidate;
  60. const Column = styled('div')`
  61. display: flex;
  62. align-items: center;
  63. `;
  64. const InformationColumn = styled(Column)`
  65. flex-direction: column;
  66. align-items: flex-start;
  67. `;
  68. const ActionsColumn = styled(Column)`
  69. justify-content: flex-end;
  70. `;