"use client" import * as React from "react" import {ImageOff} from "lucide-react" import {cn} from "@/lib/utils" import {getFileUrl, type ImageQuality} from "@/lib/services/upload/utils" type FileImagePreviewProps = { fileId: string | number alt: string quality?: ImageQuality className?: string fallbackClassName?: string variant?: "compact" | "default" } export function FileImagePreview({ fileId, alt, quality = "low", className, fallbackClassName, variant = "default", }: FileImagePreviewProps) { const [failed, setFailed] = React.useState(false) const src = getFileUrl(fileId, quality) React.useEffect(() => { setFailed(false) }, [fileId, quality]) if (!src || failed) { return (
{variant === "default" && ( 加载失败 )}
) } return ( // eslint-disable-next-line @next/next/no-img-element {alt} setFailed(true)} /> ) }