fix:default image if error

This commit is contained in:
Sabda Yagra 2026-01-05 19:28:35 +07:00
parent c62190cd99
commit e26bd85880
2 changed files with 55 additions and 3 deletions

View File

@ -216,6 +216,15 @@ function Card({
const MySwal = withReactContent(Swal); const MySwal = withReactContent(Swal);
const [isSaving, setIsSaving] = useState(false); const [isSaving, setIsSaving] = useState(false);
const [isBookmarked, setIsBookmarked] = useState(isInitiallyBookmarked); const [isBookmarked, setIsBookmarked] = useState(isInitiallyBookmarked);
const DEFAULT_IMAGE = "/assets/logo1.png";
const [imageSrc, setImageSrc] = useState(
item?.smallThumbnailLink || DEFAULT_IMAGE
);
useEffect(() => {
setImageSrc(item?.smallThumbnailLink || DEFAULT_IMAGE);
}, [item?.smallThumbnailLink]);
useEffect(() => { useEffect(() => {
setIsBookmarked(isInitiallyBookmarked); setIsBookmarked(isInitiallyBookmarked);
@ -297,11 +306,18 @@ function Card({
} w-full`} } w-full`}
> >
<Link href={getLink()}> <Link href={getLink()}>
<Image {/* <Image
src={item.smallThumbnailLink || "/contributor.png"} src={item.smallThumbnailLink || "/contributor.png"}
alt={item.title} alt={item.title}
fill fill
className="object-cover" className="object-cover"
/> */}
<Image
src={imageSrc}
alt={item.title}
fill
className="object-cover"
onError={() => setImageSrc(DEFAULT_IMAGE)}
/> />
</Link> </Link>
</div> </div>

View File

@ -52,6 +52,8 @@ export default function MediaUpdate() {
const slug = params?.slug as string; const slug = params?.slug as string;
const DEFAULT_IMAGE = "/assets/logo1.png";
useEffect(() => { useEffect(() => {
fetchData(tab); fetchData(tab);
}, [tab, slug]); }, [tab, slug]);
@ -327,6 +329,34 @@ export default function MediaUpdate() {
} }
}; };
function SafeImage({
src,
alt,
href,
}: {
src?: string;
alt?: string;
href: string;
}) {
const [imgSrc, setImgSrc] = useState(src || DEFAULT_IMAGE);
useEffect(() => {
setImgSrc(src || DEFAULT_IMAGE);
}, [src]);
return (
<Link href={href}>
<Image
src={imgSrc}
alt={alt || "Image"}
fill
className="object-cover cursor-pointer hover:opacity-90 transition-opacity"
onError={() => setImgSrc(DEFAULT_IMAGE)}
/>
</Link>
);
}
return ( return (
<section className="bg-white px-4 py-10 border max-w-[1350px] mx-auto rounded-md border-[#CDD5DF] my-10"> <section className="bg-white px-4 py-10 border max-w-[1350px] mx-auto rounded-md border-[#CDD5DF] my-10">
<div className="max-w-screen-xl mx-auto"> <div className="max-w-screen-xl mx-auto">
@ -471,12 +501,18 @@ export default function MediaUpdate() {
// 🎬 FOTO / VIDEO (default) // 🎬 FOTO / VIDEO (default)
<div className="w-full h-[204px] relative"> <div className="w-full h-[204px] relative">
<Link href={getLink(item)}> <Link href={getLink(item)}>
<Image <SafeImage
src={item.smallThumbnailLink}
alt={item.title}
href={getLink(item)}
/>
{/* <Image
src={item.smallThumbnailLink || "/placeholder.png"} src={item.smallThumbnailLink || "/placeholder.png"}
alt={item.title || "No Title"} alt={item.title || "No Title"}
fill fill
className="object-cover cursor-pointer hover:opacity-90 transition-opacity" className="object-cover cursor-pointer hover:opacity-90 transition-opacity"
/> /> */}
</Link> </Link>
</div> </div>
)} )}