Sport.jsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import WSport from "@widgets/WSport";
  2. import {useEffect, useState} from "react";
  3. import {reqGameInfo} from "@features/api";
  4. import LoadingIn from "@components/Loading/LoadingIn";
  5. import {useDispatch, useSelector} from "react-redux";
  6. import {useLocation} from "react-router-dom";
  7. import {ROUTE_PATH} from "@constants/routes";
  8. import {isLogined} from "@features/mainSlice";
  9. import {getDomainSuffix} from "@utils/helpers";
  10. const Sport = ({...props}) => {
  11. const [isReToken, setIsReToken] = useState(false);
  12. const [isSrcLoaded, setIsSrcLoaded] = useState(false);
  13. const dispatch = useDispatch();
  14. const {pathname} = useLocation();
  15. const isLogin=useSelector(isLogined);
  16. const initSport=()=>{
  17. setIsReToken(false);
  18. if (isLogin){
  19. dispatch(reqGameInfo()).then(({payload})=>{
  20. setIsReToken(true);
  21. });
  22. }
  23. else
  24. {
  25. setIsReToken(true);
  26. }
  27. }
  28. const resetSport=()=>{
  29. initSport();
  30. }
  31. // const getDomainSuffix=()=>{
  32. // // 获取当前域名
  33. // let hostname = window.location.hostname;
  34. // // 使用点分隔符分割域名
  35. // let parts = hostname.split('.');
  36. // // 取得最后一个部分,即后缀
  37. // let suffix = parts[parts.length - 1];
  38. //
  39. // return suffix;
  40. // }
  41. const checkShowSport=()=>{
  42. return isReToken&&isSrcLoaded;
  43. }
  44. const checkLoadScript=()=>{
  45. if (window.BTRenderer!=null){
  46. setIsSrcLoaded(true);
  47. return;
  48. }
  49. let suffix = getDomainSuffix();
  50. let script=document.createElement('script');
  51. if (suffix==="pro"){
  52. script.src="https://ui.invisiblesport.com/bt-renderer.min.js";
  53. }
  54. else
  55. {
  56. script.src="https://24680.sptpub.com/bt-renderer.min.js";
  57. }
  58. script.onload = function() {
  59. setIsSrcLoaded(true);
  60. };
  61. script.onerror = function() {
  62. };
  63. document.head.appendChild(script);
  64. }
  65. // useEffect(()=>{
  66. // if (pathname===ROUTE_PATH.SPORTS||pathname===ROUTE_PATH.RACING){
  67. // initSport();
  68. // }
  69. // else
  70. // {
  71. // if (!isReToken)setIsReToken(true);
  72. // }
  73. // },[pathname])
  74. useEffect(()=>{
  75. checkLoadScript();
  76. if (pathname===ROUTE_PATH.SPORTS||pathname===ROUTE_PATH.RACING){
  77. initSport();
  78. }
  79. else
  80. {
  81. if (!isReToken)setIsReToken(true);
  82. }
  83. },[])
  84. return (
  85. <>
  86. {
  87. // !isReToken?(<LoadingIn></LoadingIn>):(<WSport {...props} resetSport={resetSport}/>)
  88. !checkShowSport()?(<LoadingIn></LoadingIn>):(<WSport {...props} resetSport={resetSport}/>)
  89. }
  90. </>
  91. )
  92. }
  93. export default Sport;