fix:default image if error
This commit is contained in:
parent
c62190cd99
commit
e26bd85880
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue