import React from 'react';
import {
  IconFile,
  IconFileExcel,
  IconFileTypePpt,
  IconGif,
  IconLetterA,
  IconMusic,
  IconPdf,
  IconPhoto,
  IconVideo,
} from '@tabler/icons-react-native';
import {FILE_TYPES} from '@shared/constants';
import {ICON_SIZES} from '@shared/theme';

import {getFileNameExtension} from '../files';

export const selectSvgLogo = (type: string, width: number) => {
  switch (type) {
    case FILE_TYPES.XLSX:
    case FILE_TYPES.CSV:
    case FILE_TYPES.XLSM:
    case FILE_TYPES.XML:
      return <IconFileExcel size={width} />;
    case FILE_TYPES.PPT:
    case FILE_TYPES.PPTX:
    case FILE_TYPES.PPSM:
      return <IconFileTypePpt size={width} />;
    case FILE_TYPES.DOCX:
      return <IconLetterA size={width} />;
    case FILE_TYPES.GIF:
      return <IconGif size={width} />;
    case FILE_TYPES.JPG:
    case FILE_TYPES.JPEG:
    case FILE_TYPES.PNG:
    case FILE_TYPES.WEBP:
    case FILE_TYPES.HEIC:
    case FILE_TYPES.HEIF:
      return <IconPhoto size={width} />;
    case FILE_TYPES.PDF:
      return <IconPdf size={width} />;
    case FILE_TYPES.MPEG:
    case FILE_TYPES.WEBM:
    case FILE_TYPES.MOV:
    case FILE_TYPES.MP4:
    case FILE_TYPES.AVI:
      return <IconVideo size={width} />;
    case FILE_TYPES.MP3:
      return <IconMusic size={width} />;
    default:
      return <IconFile size={width} />;
  }
};

export const AvatarIcon = ({fileName}: {fileName: string}) =>
  selectSvgLogo(getFileNameExtension(fileName ?? '', true), ICON_SIZES.x6);
