import { SyntheticEvent } from 'react' import { ImageSize } from '../types' import { DiscordEnpoints } from '../utils/Constants' const DiscordAvatar = (props: { alt?: string userID: string avatarHash: string tag: string className?: string size? : ImageSize }) => { const fallback ='/img/default.png' const webp = localStorage.webp === 'true' return ( {props.alt)=> { if(webp) { (e.target as ImageTarget).onerror = (event) => { // All Fails (event.target as ImageTarget).onerror = ()=> { console.log('FALLBACK IMAGE LOAD FAIL') } (event.target as ImageTarget).src = fallback } // Webp Load Fail (e.target as ImageTarget).src = props.avatarHash ? DiscordEnpoints.CDN.user(props.userID, props.avatarHash, { size: props.size ?? 256 }) : DiscordEnpoints.CDN.default(props.tag, { size: props.size ?? 256}) } else (e.target as ImageTarget).onerror = (event) => { // All Fails (event.target as ImageTarget).onerror = ()=> { console.log('FALLBACK IMAGE LOAD FAIL') } (event.target as ImageTarget).src = fallback } // Webp Load Fail (e.target as ImageTarget).src = props.avatarHash ? DiscordEnpoints.CDN.user(props.userID, props.avatarHash, { size: props.size ?? 256 }) : DiscordEnpoints.CDN.default(props.tag, { size: props.size ?? 256}) }} /> ) } export default DiscordAvatar interface ImageEvent extends Event { target: ImageTarget } interface ImageTarget extends EventTarget { src: string onerror: (event: SyntheticEvent) => void }