All files / components/image index.tsx

100% Statements 6/6
100% Branches 2/2
100% Functions 3/3
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47                        4x 17x   17x 12x     17x       1x                                              
import { useEffect, useState } from 'react';
import { ImageNotSupported as NoImageIcon } from '@styled-icons/material';
 
import NextImage from 'next/image';
 
import * as S from './styles';
 
export type ImageProps = {
  image: string;
  alt: string;
};
 
const Image = ({ image, alt }: ImageProps) => {
  const [noHasImage, setNoNasImage] = useState(false);
 
  useEffect(() => {
    setNoNasImage(false);
  }, [image]);
 
  return (
    <>
      {!noHasImage ? (
        <NextImage
          onError={() => setNoNasImage(true)}
          src={image}
          layout="fill"
          objectFit="cover"
          alt={alt}
        />
      ) : (
        <S.Container>
          <S.Wrapper>
            <NoImageIcon size={56} />
            <S.Text>
              Image
              <br />
              no found
            </S.Text>
          </S.Wrapper>
        </S.Container>
      )}
    </>
  );
};
 
export { Image };