checkInSlice.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import {createSlice} from "@reduxjs/toolkit";
  2. import {buildReqReducer, reqAgentCheck, reqCheckinCheck, reqCheckinGet} from "@features/api";
  3. import {REQ_STATUS} from "@api/config";
  4. import {formatCash, getHttpMsg} from "@utils/helpers";
  5. import {toast} from "react-toastify";
  6. const i18n=global.i18n;
  7. const reducerCheckinCheck=(state,action,arg)=>{
  8. let payload=action.payload;
  9. if (payload!=null&&payload.code===200){
  10. let data=payload.data;
  11. if (data){
  12. let config=data.config;
  13. let RewardDay=[];
  14. let RewardScore=[];
  15. let nDayNumber=-1;
  16. let cbRecord=[];
  17. if (config){
  18. for (let i = 0; i < config.length; i++) {
  19. let item=config[i];
  20. let DayNumber=parseInt(item.DayNumber);
  21. let RecordDay=parseInt(item.RecordDay.substring(i,i+1))>0?1:0;
  22. let RewScore=parseInt(formatCash(item.RewardScore,true));
  23. let SignInDay=parseInt(item.SignInDay);
  24. RewardDay.push(DayNumber);
  25. RewardScore.push(RewScore);
  26. cbRecord.push(RecordDay);
  27. nDayNumber=SignInDay;
  28. }
  29. }
  30. // nDayNumber=Number(data.NextDayNumber)
  31. let LastDate=0;
  32. let NextGetTime=0;
  33. if (data.LastDate!=null){
  34. LastDate=data.LastDate;
  35. LastDate=Date.parse(LastDate+" GMT-3");
  36. NextGetTime=LastDate+86400000;
  37. }
  38. let NextDayNumber=Number(data.NextDayNumber);
  39. if (NextDayNumber>7)NextDayNumber=7
  40. state.checkInData={
  41. RewardDay,
  42. RewardScore,
  43. cbRecord,
  44. nDayNumber,
  45. LastDate,
  46. NextDayNumber
  47. }
  48. state.NextGetTime=NextGetTime;
  49. }
  50. }
  51. }
  52. const checkinCheckStatus=(state,status,arg)=>{
  53. state.status.CheckInCheck=status;
  54. }
  55. const reducerCheckinGet=(state,action,arg)=>{
  56. let payload=action.payload;
  57. let msg=getHttpMsg(payload);
  58. if (payload!=null&&payload.code===200){
  59. let data=payload.data;
  60. // global.showDropCoins();
  61. msg=i18n.t("CheckIn.get_success");
  62. if(msg&&msg!=="")toast.success(msg);
  63. }
  64. else {
  65. if(msg&&msg!=="")toast.error(msg);
  66. }
  67. if (arg.callback)arg.callback(payload);
  68. }
  69. const checkinGetStatus=(state,status,arg)=>{
  70. state.status.CheckInGet=status;
  71. }
  72. export const CheckInSlice = createSlice({
  73. name: 'checkIn',
  74. initialState: {
  75. checkInData:{
  76. // nDayNumber:2,
  77. // cbRecord:[1],
  78. // RewardDay:[1,2,3,4,5,6,7],
  79. // RewardScore:[1,1,1,2,2,2,2]
  80. nDayNumber:-1,
  81. cbRecord:[],
  82. RewardDay:[],
  83. RewardScore:[],
  84. LastDate:0,
  85. },
  86. NextGetTime:0,
  87. status:{
  88. CheckInCheck:REQ_STATUS.NONE,
  89. CheckInGet:REQ_STATUS.NONE,
  90. }
  91. },
  92. reducers: {
  93. },
  94. extraReducers: (builder) => {
  95. buildReqReducer(builder,reqCheckinCheck,reducerCheckinCheck,checkinCheckStatus);
  96. buildReqReducer(builder,reqCheckinGet,reducerCheckinGet,checkinGetStatus);
  97. },
  98. })
  99. export const {} = CheckInSlice.actions;
  100. export const getCheckInData=(state)=>{
  101. return state.checkIn.checkInData;
  102. }
  103. export const getCheckInStatus=(state)=>{
  104. return state.checkIn.status;
  105. }
  106. export const getNextGetTime=(state)=>{
  107. return state.checkIn.NextGetTime;
  108. }
  109. export default CheckInSlice.reducer;