| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import {createSlice} from "@reduxjs/toolkit";
- import {REQ_STATUS} from "@api/config";
- import {buildReqReducer, reqRedpackCheck, reqRedpackConfig, reqRedpackRecive} from "@features/api";
- import {getHttpMsg} from "@utils/helpers";
- import {toast} from "react-toastify";
- const objInfo={}
- const clearCDTimer=()=>{
- if (objInfo.cdTimer!=null){
- clearInterval(objInfo.cdTimer);
- objInfo.cdTimer=null;
- }
- }
- const checkRedpackLeftTime=(data)=>{
- clearCDTimer();
- let next_in_seconds=Number(data.next_in_seconds);
- let deadline=data.deadline;
- if (next_in_seconds>0){
- objInfo.cdTimer=setInterval(()=>{
- let now=Date.now();
- let during=deadline-now;
- during=Math.floor(during/1000);
- if (during<=0){
- global.dispatch(reqRedpackCheck());
- clearCDTimer();
- }
- else{
- global.dispatch(updateCD(during));
- }
- },1000);
- }
- }
- const reducerRedpackCheck=(state,action,arg)=>{
- let payload=action.payload;
- // payload={"data":{"status":1,"max":24680},"result":"","msg":"success","code":200};
- if (payload&&payload.code===200){
- let data=payload.data;
- if (data){
- let next_in_seconds=data.next_in_seconds?Number(data.next_in_seconds):0;
- let deadline=Date.now()+(next_in_seconds*1000);
- data.deadline=deadline;
- state.redPackData=data;
- checkRedpackLeftTime(data);
- }
- }
- }
- const redpackCheckStatus=(state,status,arg)=>{
- state.status.RedpackCheck=status;
- }
- const reducerRedpackRecive=(state,action,arg)=>{
- let payload=action.payload;
- // let msg=getHttpMsg(payload);
- if (payload&&payload.code===200){
- let data=payload.data;
- if (data){
- let amount=data.amount;
- // state.redPackData.amount=amount;
- // state.redPackData.status=2;
- state.redPackData=Object.assign({},state.redPackData,{amount:amount,status:2})
- }
- // if (msg!=null&&msg!==""){
- // toast.success(msg);
- // }
- }else
- {
- let obj=payload.msg;
- let msg="";
- if (obj){
- if (obj.message!=null){
- msg=obj.message;
- }
- }
- if (msg!=null&&msg!==""){
- toast.error(msg);
- }
- }
- }
- const redpackReciveStatus=(state,status,arg)=>{
- state.status.RedpackRecive=status;
- }
- const reducerRedpackConfig=(state,action,arg)=>{
- let payload=action.payload;
- if (payload&&payload.code===200){
- state.config=payload.data;
- }
- }
- const redpackConfigStatus=(state,status,arg)=>{
- state.status.RedpackConfig=status;
- }
- export const RedpackSlice = createSlice({
- name: "redpack",
- initialState: {
- status:{
- RedpackCheck:REQ_STATUS.NONE,
- RedpackRecive:REQ_STATUS.NONE,
- RedpackConfig:REQ_STATUS.NONE,
- },
- redPackData:null,
- config:[]
- },
- reducers:{
- updateCD:((state, action) => {
- let payload=action.payload;
- if (payload!=null){
- if (state.redPackData!=null){
- state.redPackData.next_in_seconds=payload;
- }
- }
- }),
- updateAlRecivedStatus:((state, action) => {
- state.redPackData.status=-1;
- })
- },
- extraReducers: (builder) => {
- buildReqReducer(builder,reqRedpackCheck,reducerRedpackCheck,redpackCheckStatus);
- buildReqReducer(builder,reqRedpackRecive,reducerRedpackRecive,redpackReciveStatus);
- buildReqReducer(builder,reqRedpackConfig,reducerRedpackConfig,redpackConfigStatus);
- }
- })
- export const {updateCD,updateAlRecivedStatus}=RedpackSlice.actions;
- export const getRedPackInfo=(state)=>{
- return state.redpack.redPackData;
- }
- export const getRedPackConfig=(state)=>{
- return state.redpack.config;
- }
- export const getReciveStatus=(state)=>{
- return state.redpack.status.RedpackRecive;
- }
- export const getRedConfigStatus=(state)=>{
- return state.redpack.status.RedpackConfig;
- }
- export default RedpackSlice.reducer;
|