index.jsx 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import styles from './styles.module.scss';
  2. import {useEffect, useState} from "react";
  3. import {reqFirstPayConfig, reqProtectCheck} from "@features/api";
  4. import {useDispatch, useSelector} from "react-redux";
  5. import {getFirstBonus, getOpenRelief, getPopBindPhone, getUserInfo} from "@features/mainSlice";
  6. import {APP_WELFARE} from "@constants/app";
  7. import {getCurrPayOrder, getOFirstPay} from "@features/paySlice";
  8. import {getProtectInfo} from "@features/protectSlice";
  9. import {formatCash} from "@utils/helpers";
  10. import {useThemeProvider} from "@contexts/themeContext";
  11. import {useSidebar} from "@contexts/sidebarContext";
  12. const WelfareBtn=({children,open=false,pressDown=false,...props})=>{
  13. return (
  14. <button className={`${styles.wlf_btn} ${open?styles.wlf_btn_open:styles.wlf_btn_close} ${pressDown?styles.wlf_btn_press:''}`}
  15. {...props}
  16. >
  17. {
  18. children==null?(<></>):children
  19. }
  20. </button>
  21. )
  22. }
  23. const WWelfarebar = () => {
  24. const dispatch = useDispatch();
  25. const user=useSelector(getUserInfo);
  26. //0:1,1:1,2:1
  27. // const [openState, setOpenState] = useState({});
  28. const [openProtect,setOpenProtect]=useState(0);
  29. const [openFirst,setOpenFirst]=useState(0);
  30. const [openBind,setOpenBind]=useState(0);
  31. const firstPayConf=useSelector(getOFirstPay);
  32. const popBindPhone=useSelector(getPopBindPhone);
  33. const firstBonus=useSelector(getFirstBonus);
  34. const openRelief=useSelector(getOpenRelief);
  35. const protectInfo=useSelector(getProtectInfo);
  36. const orderInfo=useSelector(getCurrPayOrder);
  37. const {welfTabState,isMobile}=useThemeProvider();
  38. const {open} = useSidebar();
  39. const getWelfTabState=(key)=>{
  40. if (welfTabState===key)return true;
  41. return false;
  42. }
  43. const changeNewState=(key,state)=>{
  44. // let newOpenState= Object.assign({},openState);
  45. // newOpenState[key]=state;
  46. // setOpenState(newOpenState);
  47. // state=1;
  48. switch (key){
  49. case APP_WELFARE.PROTECT:
  50. setOpenProtect(state);
  51. break;
  52. case APP_WELFARE.FIRST_PAY:
  53. setOpenFirst(state);
  54. break;
  55. case APP_WELFARE.BIND:
  56. setOpenBind(state);
  57. break;
  58. }
  59. }
  60. const checkProtect=()=>{
  61. let state=0;
  62. if (openRelief){
  63. if (protectInfo!=null){
  64. if (user.UserID>0){
  65. // let CurProtectTimes=protectInfo.CurProtectTimes!=null?parseInt(protectInfo.CurProtectTimes):0;
  66. // if (CurProtectTimes>0)state=1;
  67. state=1;
  68. }
  69. }
  70. }
  71. changeNewState(APP_WELFARE.PROTECT,state);
  72. }
  73. const checkProtectLimit=()=>{
  74. if (protectInfo!=null){
  75. let ProtectLimit=protectInfo.ProtectLimit;
  76. if (ProtectLimit!=null){
  77. ProtectLimit=Number(ProtectLimit);
  78. ProtectLimit=Number(formatCash(ProtectLimit))
  79. let Score=user.Score;
  80. if (Score<=ProtectLimit){
  81. dispatch(reqProtectCheck());
  82. }
  83. }
  84. }
  85. }
  86. const checkFirstPay=()=>{
  87. let state=0;
  88. if (firstBonus){
  89. if (user.UserID>0){
  90. if (firstPayConf!=null)state=1;
  91. }
  92. }
  93. changeNewState(APP_WELFARE.FIRST_PAY,state);
  94. }
  95. const checkFirstPayStatus=()=>{
  96. if (orderInfo!=null){
  97. if (orderInfo.status==="success"){
  98. dispatch(reqFirstPayConfig());
  99. }
  100. }
  101. }
  102. const checkBind=()=>{
  103. let state=0;
  104. if (popBindPhone){
  105. if (user.UserID>0){
  106. if (user.Phone==null||user.Phone===""){
  107. state=1;
  108. }
  109. }
  110. }
  111. changeNewState(APP_WELFARE.BIND,state);
  112. }
  113. useEffect(()=>{
  114. let UserID=user.UserID;
  115. if (UserID>0){
  116. dispatch(reqProtectCheck());
  117. dispatch(reqFirstPayConfig());
  118. }
  119. },[user.UserID]);
  120. useEffect(() => {
  121. checkProtectLimit();
  122. }, [user.Score]);
  123. useEffect(()=>{
  124. checkFirstPay();
  125. },[firstPayConf]);
  126. useEffect(()=>{
  127. checkBind();
  128. },[popBindPhone,user.Phone]);
  129. useEffect(()=>{
  130. checkProtect();
  131. },[protectInfo])
  132. useEffect(()=>{
  133. checkFirstPayStatus();
  134. },[orderInfo])
  135. const renderBar=()=>{
  136. let extra='';
  137. if (!isMobile()){
  138. if (open)extra='sidebar-open';
  139. else extra='sidebar-close';
  140. }
  141. return (
  142. <div className={`${styles.container} ${extra}`}>
  143. <div className={styles.content}>
  144. <WelfareBtn key={"protect"} open={openProtect} pressDown={getWelfTabState(APP_WELFARE.PROTECT)}
  145. onClick={() => {
  146. global.showProtectReward();
  147. }}>
  148. <img className={styles.wlf_protect} src={require("@assets/welfare/protect.png")}/>
  149. </WelfareBtn>
  150. <WelfareBtn key={"first_pay"} open={openFirst} pressDown={getWelfTabState(APP_WELFARE.FIRST_PAY)}
  151. onClick={() => {
  152. global.showFirstPay();
  153. }}>
  154. <img className={styles.wlf_first} src={require("@assets/welfare/first_pay.png")}/>
  155. </WelfareBtn>
  156. <WelfareBtn key={"bind"} open={openBind} pressDown={getWelfTabState(APP_WELFARE.BIND)}
  157. onClick={() => {
  158. global.showBindPhone();
  159. }}>
  160. <img className={styles.wlf_bind} src={require("@assets/welfare/bind.png")}/>
  161. </WelfareBtn>
  162. </div>
  163. </div>
  164. )
  165. }
  166. return (
  167. <>
  168. {renderBar()}
  169. </>
  170. )
  171. }
  172. export default WWelfarebar;