"use client"; import { GameListRep, getGameDetailApi } from "@/api/home"; import { useRouter } from "@/i18n"; import { useGlobalStore } from "@/stores"; import { brandList } from "@/utils/constant"; import { Button, Modal, ModalBody, ModalContent, useDisclosure } from "@nextui-org/react"; import { Toast } from "antd-mobile"; import { useTranslations } from "next-intl"; import { FC, PropsWithChildren, ReactNode, useRef } 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 { isOpen, onOpen, onOpenChange, onClose } = useDisclosure(); const app: HTMLElement = document.querySelector("#app")!; const t = useTranslations("Game"); const urlRef = useRef(""); const brandRef = useRef(""); const state = useGlobalStore(); const router = useRouter(); const { token } = state; const handler = (game: GameListRep) => { onOpen(); 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("数据错误"); } onClose(); }; return ( <> {render ? ( render(item!) ) : (
handler(item!)}> {item?.game_name_cn}
)} {(onClose) => ( <>
{item?.game_name_cn}

{item?.game_name_cn}

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