sentryAppAvatar.tsx 1008 B

12345678910111213141516171819202122232425262728293031323334
  1. import BaseAvatar from 'sentry/components/avatar/baseAvatar';
  2. import {IconGeneric} from 'sentry/icons';
  3. import {SentryApp} from 'sentry/types';
  4. type Props = {
  5. sentryApp?: SentryApp;
  6. isColor?: boolean;
  7. isDefault?: boolean;
  8. } & BaseAvatar['props'];
  9. const SentryAppAvatar = ({isColor = true, sentryApp, isDefault, ...props}: Props) => {
  10. const avatarDetails = sentryApp?.avatars?.find(({color}) => color === isColor);
  11. // Render the default if the prop is provided, there is no existing avatar, or it has been reverted to 'default'
  12. if (isDefault || !avatarDetails || avatarDetails.avatarType === 'default') {
  13. return (
  14. <IconGeneric
  15. size={`${props.size}`}
  16. className={props.className}
  17. data-test-id="default-sentry-app-avatar"
  18. />
  19. );
  20. }
  21. return (
  22. <BaseAvatar
  23. {...props}
  24. type="upload"
  25. uploadPath="sentry-app-avatar"
  26. uploadId={avatarDetails?.avatarUuid}
  27. title={sentryApp?.name}
  28. />
  29. );
  30. };
  31. export default SentryAppAvatar;