/* eslint-disable @next/next/no-img-element */ import { deepClone } from '@/lib/utils' import { useRouter } from 'next/router' import { useState } from 'react' import { useGameGlobal } from '..' /** * 游戏列表- 最近游戏 * @returns */ export const GameListRecent = ({ maxCount = 14 }) => { const { recentGames } = useGameGlobal() const gamesClone = deepClone(recentGames) // 构造一个List const components = [] let index = 0 // 无限循环 while (gamesClone?.length > 0 && index < maxCount) { const item = gamesClone?.shift() if (item) { components.push() index++ } continue } if (components.length === 0) { return <> } return ( <>
{components?.map((ItemComponent, index) => { return ItemComponent })}
) } /** * 游戏=单卡 * @param {*} param0 * @returns */ const GameItem = ({ item }) => { const router = useRouter() const { recentGames, setRecentGames } = useGameGlobal() const { title } = item || {} const [showType, setShowType] = useState('img') // img or video const [isClockVisible, setClockVisible] = useState(true) const toggleIcons = () => { setClockVisible(!isClockVisible) } /** * 移除最近 */ const removeRecent = () => { const updatedRecentGames = deepClone(recentGames) // 创建一个 recentGames 的副本 const indexToRemove = updatedRecentGames.findIndex( game => game?.title === item.title ) // 找到要移除的项的索引 if (indexToRemove !== -1) { updatedRecentGames.splice(indexToRemove, 1) // 使用 splice 方法删除项 setRecentGames(updatedRecentGames) // 更新 recentGames 状态 localStorage.setItem('recent_games', JSON.stringify(updatedRecentGames)) } } const handleButtonClick = () => { router.push(item?.href) // 如果是 Next.js } const img = item?.pageCoverThumbnail const video = item?.ext?.video return (
{ setShowType('video') }} onMouseOut={() => { setShowType('img') }} title={title} className={`cursor-pointer card-single h-28 w-28 relative shadow rounded-md overflow-hidden flex justify-center items-center group hover:border-purple-400`}>
{title}
{showType === 'video' && ( )} {title}
) }