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 (
);
} else {
return <>>;
}
};
const MediaList = ({ resources = [] }: { resources: Resource[] }) => {
if (resources.length === 0) return <>>;
if (resources.length === 1) {
return (