import { memo } from "react";
import { Resource } from "@/types/proto/api/v1/resource_service";
import { cn } from "@/utils";
import { getResourceType, getResourceUrl } from "@/utils/resource";
import MemoResource from "./MemoResource";
import showPreviewImageDialog from "./PreviewImageDialog";
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, className }: { resource: Resource; className?: string }) => {
const type = getResourceType(resource);
const resourceUrl = getResourceUrl(resource);
if (type === "image/*") {
return (
handleImageClick(resourceUrl)}
decoding="async"
loading="lazy"
/>
);
} else if (type === "video/*") {
return (
);
} else {
return <>>;
}
};
const MediaList = ({ resources = [] }: { resources: Resource[] }) => {
const cards = resources.map((resource) => (