ChannelAvatar.tsx 934 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import React from 'react';
  2. import { Link } from 'react-router-dom';
  3. import { ChannelEntity } from '../entities/ChannelEntity';
  4. import { BgImg } from '../common/BgImg';
  5. import { DEFAULT_THUMBNAIL_URL } from '@polkadot/joy-utils/images';
  6. const defaultSizePx = 75;
  7. export type ChannelAvatarSize = 'big' | 'default' | 'small';
  8. type Props = {
  9. channel: ChannelEntity;
  10. size?: ChannelAvatarSize;
  11. }
  12. function sizeToPx (size: ChannelAvatarSize): number {
  13. switch (size) {
  14. case 'big': return 100;
  15. case 'small': return 35;
  16. case 'default': return defaultSizePx;
  17. default: return defaultSizePx;
  18. }
  19. }
  20. export function ChannelAvatar (props: Props) {
  21. const { channel, size = 'default' } = props;
  22. return (
  23. <Link to={`/media/channels/${channel.id}`}>
  24. <BgImg
  25. className={'ChannelAvatar ' + size}
  26. url={channel.avatar || DEFAULT_THUMBNAIL_URL}
  27. size={sizeToPx(size)}
  28. />
  29. </Link>
  30. );
  31. }