import {createAsyncThunk} from "@reduxjs/toolkit"; import { APP_GAME_LIST, APP_LOGIN, APP_LOGOUT, APP_PAGE_MODULES, APP_REGISTER, APP_ROUTES, REQ_STATUS } from "@api/config"; import Http from "@api/request"; import {updateGameList} from "@features/pageSlice"; export const buildReqReducer=(builder,thunk,callback,statusCB=null)=>{ if (builder==null||thunk==null)return; builder .addCase(thunk.pending, (state,action) => { //正在请求 // state.status=REQ_STATUS.LOADING; if (statusCB)statusCB(state,REQ_STATUS.LOADING,action.meta.arg); }) .addCase(thunk.fulfilled, (state, action) => { //请求成功 if (statusCB)statusCB(state,REQ_STATUS.IDLE,action.meta.arg); if (callback)callback(state,action,action.meta.arg); // state.status=REQ_STATUS.IDLE; }) .addCase(thunk.rejected, (state,action) => { //请求失败 // state.status=REQ_STATUS.FAILED; if (statusCB)statusCB(state,REQ_STATUS.FAILED,action.meta.arg); }); } //api //路由 export const reqGetRoutes = createAsyncThunk( APP_ROUTES, async (thunkAPI) => { const response = await Http.get({url:APP_ROUTES}) return response; }, ) //page 信息 pageID 为路由ID export const reqPageModules=createAsyncThunk( APP_PAGE_MODULES, async (pageID,thunkAPI) => { const response = await Http.get({url:APP_PAGE_MODULES+"/"+pageID}); if (response){ response.pageID=pageID; } return response; }, ) //gamelist more export const reqGameList=createAsyncThunk( APP_GAME_LIST, async (arg,thunkAPI) => { const {mkey,tabtype,page}=arg; // https://api.ouro777.com/game/gameList/?type=2&page=2 const url=APP_GAME_LIST+"?type="+tabtype+"&page="+page; const response = await Http.get({url:url}); if (response)response.mkey=mkey; thunkAPI.dispatch(updateGameList(response)); return response; }, ) //login export const reqLogin=createAsyncThunk( APP_LOGIN, async (arg,thunkAPI)=>{ //https://api.ouro777.com/game/login?country=55&account=12345678911&password=123456 let lang=global.i18n.getCurrLang(); let data={ country:arg.country, account:arg.account, password:arg.password, lang:lang } let params={ url:APP_LOGIN, data:data } const response = await Http.post(params); return response; }, ) //register export const reqRegister=createAsyncThunk( APP_REGISTER, async (arg,thunkAPI)=>{ //https://api.ouro777.com/game/register?country=55&phone=12345678911&password=123456&&repassword=123456 let lang=global.i18n.getCurrLang(); let data={ country:arg.country, phone:arg.account, password:arg.password, repassword:arg.repassword, lang:lang } let params={ url:APP_REGISTER, data:data } const response = await Http.post(params); return response; }, ) //logout export const reqLogout=createAsyncThunk( APP_LOGOUT, async (arg,thunkAPI)=>{ let params={ url:APP_LOGOUT, } const response = await Http.get(params); return response; }, ) //api