"use client"; import { GameListRep, getGameDetailApi } from "@/api/home"; import Box from "@/components/Box"; import { useRouter } from "@/i18n"; import { useGlobalStore } from "@/stores"; import { brandList } from "@/utils/constant"; import { Button, Popup, Toast } from "antd-mobile"; import { useTranslations } from "next-intl"; import { FC, PropsWithChildren, ReactNode, useEffect, useRef, useState } from "react"; import styles from "./style.module.scss"; export interface CardProps { item?: GameListRep; render?: (value: GameListRep) => ReactNode; } const Card: FC> = (props) => { const { render, item } = props; const appRef = useRef(); const t = useTranslations("Game"); const urlRef = useRef(""); const brandRef = useRef(""); const [visible, setVisible] = useState(false); const state = useGlobalStore(); const router = useRouter(); const { token } = state; useEffect(() => { appRef.current! = document.querySelector("#app")!; }, []); const handler = (game: GameListRep) => { setVisible(true); brandRef.current = brandList.find((item) => item.gid === game.game_id)?.brand ?? ""; if (!token) return; const params = { id: game.id, }; getGameDetailApi(params).then((res) => { urlRef.current = res.data?.game_url; }); }; const playGameHandler = () => { if (!token) { router.push("/login?redirect=/withdraw"); return; } if (urlRef.current) { window.open(`${urlRef.current}&brand=${brandRef.current}`); } else { Toast.show("数据错误"); } }; return ( <> {render ? ( render(item!) ) : (
handler(item!)}> {item?.game_name_cn}
)} { setVisible(false); }} onClose={() => { setVisible(false); }} showCloseButton={true} getContainer={() => document.getElementById("app")!} bodyStyle={{ background: "#1c1c1c" }} >
{item?.game_name_cn}

{item?.game_name_cn}

{/**/} {/* {t("demo")}*/} {/**/}
); }; export default Card;