From e12fe024a9c837dc88569f80f3f75ead85bdfbde Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Fri, 19 Apr 2024 23:47:45 +0100 Subject: fix: Use next/image for serving bookmark images --- .../components/dashboard/bookmarks/LinkCard.tsx | 39 ++++++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) (limited to 'apps/web/components/dashboard/bookmarks') diff --git a/apps/web/components/dashboard/bookmarks/LinkCard.tsx b/apps/web/components/dashboard/bookmarks/LinkCard.tsx index 3bb1698f..2472fdbe 100644 --- a/apps/web/components/dashboard/bookmarks/LinkCard.tsx +++ b/apps/web/components/dashboard/bookmarks/LinkCard.tsx @@ -1,5 +1,6 @@ "use client"; +import Image from "next/image"; import Link from "next/link"; import { api } from "@/lib/trpc"; @@ -31,19 +32,35 @@ function LinkImage({ }) { const link = bookmark.content; - // A dummy white pixel for when there's no image. - // TODO: Better handling for cards with no images - const image = - getBookmarkLinkImageUrl(link)?.url ?? - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdj+P///38ACfsD/QVDRcoAAAAASUVORK5CYII="; + const imgComponent = (url: string, unoptimized: boolean) => ( + card banner + ); + + const imageDetails = getBookmarkLinkImageUrl(link); + + let img: React.ReactNode = null; + if (isBookmarkStillCrawling(bookmark)) { + img = imgComponent("/blur.avif", false); + } else if (imageDetails) { + img = imgComponent(imageDetails.url, !imageDetails.localAsset); + } else { + // No image found + // A dummy white pixel for when there's no image. + img = imgComponent( + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdj+P///38ACfsD/QVDRcoAAAAASUVORK5CYII=", + true, + ); + } + return ( - {/* eslint-disable-next-line @next/next/no-img-element */} - card banner +
{img}
); } -- cgit v1.2.3-70-g09d2