This commit is contained in:
Sabda Yagra 2026-01-05 19:29:45 +07:00
commit e5cfb9a49f
2 changed files with 55 additions and 3 deletions

View File

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

View File

@ -52,6 +52,8 @@ export default function MediaUpdate() {
const slug = params?.slug as string;
const DEFAULT_IMAGE = "/assets/logo1.png";
useEffect(() => {
fetchData(tab);
}, [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 (
<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">
@ -471,12 +501,18 @@ export default function MediaUpdate() {
// 🎬 FOTO / VIDEO (default)
<div className="w-full h-[204px] relative">
<Link href={getLink(item)}>
<Image
<SafeImage
src={item.smallThumbnailLink}
alt={item.title}
href={getLink(item)}
/>
{/* <Image
src={item.smallThumbnailLink || "/placeholder.png"}
alt={item.title || "No Title"}
fill
className="object-cover cursor-pointer hover:opacity-90 transition-opacity"
/>
/> */}
</Link>
</div>
)}