import styles from "@components/GameItem/styles.module.scss"; import {NavLink, useNavigate} from "react-router-dom"; import {LazyLoadImage} from "react-lazy-load-image-component"; import symbol from "@assets/symbol-defs.svg"; import React from "react"; import {ROUTE_PATH} from "@constants/routes"; import {localStorageSet} from "@utils/helpers"; import {LOCAL_GAME_INFO, LOCAL_GAME_URL} from "@constants/localkey"; import Imgix from "@components/Imgix"; import LazyImgix from "@components/Imgix/LazyImgix"; import {ReactComponent as UNLikeIcon} from "@assets/singlesvg/xiai_bai.svg"; import {ReactComponent as LikeIcon} from "@assets/singlesvg/xiai_hong.svg"; import {useDispatch, useSelector} from "react-redux"; import {getGameLike, isLogined, updateGameLike} from "@features/mainSlice"; import {updatePageGameLike} from "@features/pageSlice"; import SvgIcon from "@components/SvgIcon"; import {reqUpdateFavoInfo} from "@features/api"; import styled from 'styled-components/macro'; export const GameImgAspectRatio=384/516; const StyledGridItem = styled.div` ${(props) => { let whStyle=props.$whStyle; let width=''; let aspectRatio=''; if (whStyle!=null){ width=`width:${whStyle.width} !important;`; aspectRatio=`aspect-ratio:${whStyle.aspectRatio} !important;`; } return ` ${width} ${aspectRatio} ` }} ` const StyledImgWrap=styled.button` aspect-ratio: ${GameImgAspectRatio}; ${(props) => { let whStyle=props.$whStyle; let aspectRatio=''; if (whStyle!=null){ aspectRatio=`aspect-ratio:${whStyle.aspectRatio} !important;`; } return ` ${aspectRatio} ` }} ` const GameItem=({data,handleRoom,whStyle,...props})=>{ const navigate=useNavigate(); const like=useSelector(getGameLike(data.id)); const isLogin=useSelector(isLogined); const dispatch=useDispatch(); const renderOlicon=()=>{ return ( ); } const formatNum=(num)=>{ num=Number(num); let snum=num+""; if (num>=1000){ snum=(num/1000).toFixed(2)+"K"; } return snum; } const getRoom=()=>{ let room=[]; let level_info=data.level_info; if (level_info){ for (const key in level_info) { room.push({key:key,value:level_info[key]}); } } return room; } const saveGameInfo=(item)=>{ let info={ data:item } localStorageSet(LOCAL_GAME_INFO+item.id,JSON.stringify(info)); } const onEnterGame=()=>{ let id=data.id; let url=data.link; localStorageSet(LOCAL_GAME_URL+id,url); saveGameInfo(data); let path=ROUTE_PATH.GAME+"/"+id; global.authLockPath=path; navigate(path); } const handleEnterRoom=(e)=>{ if (handleRoom==null)onEnterGame(); else { let room=getRoom(); if (room.length>1)handleRoom(e,data); else onEnterGame(); } } const handleLike=()=>{ let info={id:data.id,data:data,like:(1-like)} dispatch(updateGameLike(info)); dispatch(updatePageGameLike(info)); if(isLogin)dispatch(reqUpdateFavoInfo(info)); } // return ( //