import { Tag } from "@/components/ui/tag"; import { cn, formatNumberToKMB } from "@/lib/utils"; import { IAlbumItem, LikedStatus, LockStatus } from "@/services/user"; import Image from "next/image"; import { useState } from "react"; import { useAIUser } from "../context/aiUser"; import { IconButton } from "@/components/ui/button"; import AlbumItemAction from "./AlbumItemAction"; import { formatFromCents } from "@/utils/number"; interface AlbumItemProps { item: IAlbumItem; onLike: (albumId: number, isLiked: boolean) => void; onImageClick: () => void; } const AlbumItem = ({ item, onLike, onImageClick }: AlbumItemProps) => { const [imageLoading, setImageLoading] = useState(true); const { isOwner } = useAIUser(); const handleLike = () => { onLike(item.albumId, item.likedStatus === LikedStatus.Liked); }; const renderTag = () => { if (item.isDefault) { return null; } if (isOwner) { if (item.lockStatus) { return ( ) } } if (item.lockStatus === LockStatus.Unlock) { return ( ); } return null; }; const renderOverlay = () => { // 如果是自己的相册,则不显示解锁按钮 if (isOwner) { return null; } if (item.lockStatus === LockStatus.Lock) { return (
{ // e.stopPropagation(); // handleUnlock(); }} >
diamond
{formatFromCents(item.unlockPrice || 0)}
Unlock
); } return null; }; const renderDefaultTag = () => { if (item.isDefault) { return ( Default ); } return null; } return (
{/* 背景图片 */}
Album image setImageLoading(false)} sizes="(max-width: 768px) 50vw, 176px" /> {imageLoading && (
)}
{renderDefaultTag()} {/* 标签 */} {renderTag()} {/* 付费内容遮罩 */} {renderOverlay()} {/* 底部操作区 */}
e.stopPropagation()}> {/* 点赞按钮 */} {(item.lockStatus !== LockStatus.Lock || isOwner) &&
{item.likedStatus === LikedStatus.Liked ? ( ) : ( )} {formatNumberToKMB(item.likedCount ?? 0)}
}
); }; export default AlbumItem;