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