import { memo } from "react"; import { Resource } from "@/types/proto/api/v1/resource_service"; import { getResourceType, getResourceUrl } from "@/utils/resource"; import MemoResource from "./MemoResource"; import showPreviewImageDialog from "./PreviewImageDialog"; import SquareDiv from "./kit/SquareDiv"; const MemoResourceListView = ({ resources = [] }: { resources: Resource[] }) => { const mediaResources: Resource[] = []; const otherResources: Resource[] = []; resources.forEach((resource) => { const type = getResourceType(resource); if (type === "image/*" || type === "video/*") { mediaResources.push(resource); return; } otherResources.push(resource); }); const handleImageClick = (imgUrl: string) => { const imgUrls = mediaResources .filter((resource) => getResourceType(resource) === "image/*") .map((resource) => getResourceUrl(resource)); const index = imgUrls.findIndex((url) => url === imgUrl); showPreviewImageDialog(imgUrls, index); }; const MediaCard = ({ resource }: { resource: Resource }) => { const type = getResourceType(resource); const resourceUrl = getResourceUrl(resource); if (type === "image/*") { return ( handleImageClick(resourceUrl)} decoding="async" loading="lazy" /> ); } else if (type === "video/*") { return (