index.jsx 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import styles from './styles.module.scss'
  2. import {useEffect, useRef} from "react";
  3. import {useThemeProvider} from "@contexts/themeContext";
  4. import {useSelector} from "react-redux";
  5. import {getBBConf, getUserID, getUserInfo} from "@features/mainSlice";
  6. import {APP_THEME} from "@constants/app";
  7. import {useNavigate} from "react-router-dom";
  8. import {ROUTE_PATH} from "@constants/routes";
  9. const i18n=global.i18n;
  10. const objInfo={
  11. bt:null
  12. }
  13. const WSport=({})=>{
  14. const {isMobile}=useThemeProvider();
  15. const bbConf=useSelector(getBBConf);
  16. const {theme}=useThemeProvider();
  17. const user=useSelector(getUserInfo);
  18. const userID=useSelector(getUserID);
  19. const language=i18n.language;
  20. const navigate=useNavigate();
  21. const initBetby=()=>{
  22. if (bbConf==null)return null;
  23. let brand_id=bbConf.id;
  24. let bbtheme=bbConf.theme;
  25. let themeIndex=0;
  26. if (theme===APP_THEME.LIGHT)themeIndex=1;
  27. let themeName=bbtheme[themeIndex];
  28. let token=null;
  29. // if (bbConf.token!=null)token=bbConf.token;
  30. if (user!=null&&user.bb!=null&&user.bb.token!=null)token=user.bb.token;
  31. // token=null;
  32. var bt = new window.BTRenderer().initialize({
  33. brand_id: brand_id,
  34. token: token,
  35. onTokenExpired: function() {},
  36. themeName: themeName,
  37. // themeName: "bc-game-dark-tile",
  38. lang: language,
  39. target: document.getElementById('betby'),
  40. betSlipOffsetBottom: 70,
  41. betSlipOffsetRight: 0,
  42. betSlipOffsetTop: 130,
  43. betslipZIndex: 100,
  44. onRouteChange: function() {},
  45. onLogin: function() {
  46. navigate(ROUTE_PATH.SIGN_IN);
  47. },
  48. onRegister: function() {
  49. navigate(ROUTE_PATH.SIGN_UP);
  50. },
  51. onRecharge:function (){
  52. navigate(ROUTE_PATH.PAY);
  53. },
  54. onSessionRefresh: function() {},
  55. onBetSlipStateChange: function() {}
  56. })
  57. return bt;
  58. }
  59. const clearBT=()=>{
  60. if (objInfo.bt){
  61. objInfo.bt.kill();
  62. objInfo.bt=null;
  63. }
  64. }
  65. useEffect(()=>{
  66. clearBT();
  67. objInfo.bt=initBetby();
  68. return ()=>{
  69. clearBT();
  70. }
  71. },[userID,theme,language])
  72. return (
  73. <div id="betby" className={`${styles.container} ${isMobile()?styles.container_m:''}`}></div>
  74. )
  75. }
  76. export default WSport;