|
@@ -4,7 +4,7 @@ import { useRouter } from "@/i18n/routing";
|
|
|
import { server } from "@/utils/client";
|
|
|
import { useTranslations } from "next-intl";
|
|
|
import Script from "next/script";
|
|
|
-import { FC, useEffect, useRef } from "react";
|
|
|
+import { FC, useEffect, useRef,useState } from "react";
|
|
|
|
|
|
interface Props {
|
|
|
brand_id: string;
|
|
@@ -14,9 +14,33 @@ interface Props {
|
|
|
const SportsClient: FC<Props> = (props) => {
|
|
|
const t = useTranslations("ProfilePage");
|
|
|
const { brand_id, token } = props;
|
|
|
+ const [currentToken, setCurrentToken] = useState(token);
|
|
|
+
|
|
|
|
|
|
const btRef = useRef(null);
|
|
|
const router = useRouter();
|
|
|
+
|
|
|
+ // useEffect(() => {
|
|
|
+ // // @ts-ignore
|
|
|
+ // if (window.BTRenderer) {
|
|
|
+ // onLoad();
|
|
|
+ // }
|
|
|
+
|
|
|
+ // return () => {
|
|
|
+ // // @ts-ignore
|
|
|
+ // btRef.current?.kill();
|
|
|
+ // };
|
|
|
+ // }, []);
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ updateToken(token);
|
|
|
+ // return () => {
|
|
|
+ // // @ts-ignore
|
|
|
+ // btRef.current?.kill();
|
|
|
+ // };
|
|
|
+ }, [token]);
|
|
|
+
|
|
|
+
|
|
|
const getGameDetailApi = async () => {
|
|
|
const data = await server
|
|
|
.request<GameInfo>({
|
|
@@ -26,9 +50,10 @@ const SportsClient: FC<Props> = (props) => {
|
|
|
})
|
|
|
.then((res) => {
|
|
|
if (res.code === 200) {
|
|
|
- return res.data.game_url;
|
|
|
+ setCurrentToken(res.data.game_url)
|
|
|
+ return res.data.game_url;
|
|
|
} else {
|
|
|
- return "";
|
|
|
+ return "";
|
|
|
}
|
|
|
});
|
|
|
return data;
|
|
@@ -40,9 +65,17 @@ const SportsClient: FC<Props> = (props) => {
|
|
|
btRef.current = bt;
|
|
|
bt.initialize({
|
|
|
brand_id: brand_id,
|
|
|
- token: token,
|
|
|
- onTokenExpired: getGameDetailApi,
|
|
|
- onSessionRefresh: () => router.refresh(),
|
|
|
+ token: token,//使用最新的token
|
|
|
+ // onTokenExpired: getGameDetailApi, //过期自动更新token
|
|
|
+ onSessionRefresh: () => {
|
|
|
+ // 销毁之前的实例并等待刷新完成
|
|
|
+ if(btRef.current){
|
|
|
+ // @ts-ignore
|
|
|
+ btRef.current?.kill();
|
|
|
+ }
|
|
|
+
|
|
|
+ router.refresh()
|
|
|
+ },
|
|
|
themeName: "default",
|
|
|
lang: "pt-br",
|
|
|
target: document.getElementById("betby"),
|
|
@@ -55,29 +88,34 @@ const SportsClient: FC<Props> = (props) => {
|
|
|
onRecharge: function () {
|
|
|
router.push("/deposit");
|
|
|
},
|
|
|
- onRouteChange: function () {},
|
|
|
+ onRouteChange: function () {
|
|
|
+ },
|
|
|
onLogin: function () {},
|
|
|
onRegister: function () {},
|
|
|
onBetSlipStateChange: function () {},
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- useEffect(() => {
|
|
|
+
|
|
|
+ const updateToken = (token: string) => {
|
|
|
+ // @ts-ignore
|
|
|
+ console.log("token===>333",window.BTRenderer,token,currentToken)
|
|
|
+ // if(currentToken!== token){
|
|
|
+ setCurrentToken(token);
|
|
|
+ // }
|
|
|
+
|
|
|
// @ts-ignore
|
|
|
if (window.BTRenderer) {
|
|
|
- onLoad();
|
|
|
+ onLoad();
|
|
|
}
|
|
|
- return () => {
|
|
|
- // @ts-ignore
|
|
|
- btRef.current?.kill();
|
|
|
- };
|
|
|
- }, []);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
return (
|
|
|
- <>
|
|
|
- <div id="betby" className={"h-[100%]"}></div>
|
|
|
+ <>
|
|
|
+ <div id="betby" className={"h-[100%]"}></div>
|
|
|
|
|
|
- <Script src={"https://ui.invisiblesport.com/bt-renderer.min.js"} onLoad={onLoad} />
|
|
|
+ <Script src={"https://ui.invisiblesport.com/bt-renderer.min.js"} onLoad={onLoad} />
|
|
|
</>
|
|
|
);
|
|
|
};
|