Commit dcd5406e authored by chechunchi's avatar chechunchi

update checkCardModal slice

parent 1e924955
Pipeline #19681 passed with stages
in 4 minutes and 21 seconds
......@@ -42,22 +42,22 @@ export const setCheckCardModalV2FinishAbleImpl: DuelReducer<boolean> = (
};
// 增加卡牌选项
export const fetchCheckCardMetaV2 = createAsyncThunk(
export const fetchCheckCardMetasV2 = createAsyncThunk(
"duel/fetchCheckCardMetaV2",
async (param: {
controler: number;
selected: boolean;
option: { code: number; response?: number };
options: { code: number; response: number }[];
}) => {
const meta = await fetchCard(param.option.code);
const metas = await Promise.all(
param.options.map(async (option) => {
return await fetchCard(option.code);
})
);
const response = {
controler: param.controler,
selected: param.selected,
meta: {
code: meta.id,
name: meta.text.name,
desc: meta.text.desc,
},
metas,
};
return response;
......@@ -67,30 +67,32 @@ export const fetchCheckCardMetaV2 = createAsyncThunk(
export const checkCardModalV2Case = (
builder: ActionReducerMapBuilder<DuelState>
) => {
builder.addCase(fetchCheckCardMetaV2.pending, (state, action) => {
builder.addCase(fetchCheckCardMetasV2.pending, (state, action) => {
const selected = action.meta.arg.selected;
const code = action.meta.arg.option.code;
const response = action.meta.arg.option.response;
const options = action.meta.arg.options;
const options = selected
? state.modalState.checkCardModalV2.selectedOptions
: state.modalState.checkCardModalV2.selectableOptions;
options.push({ code, response });
if (selected) {
state.modalState.checkCardModalV2.selectedOptions = options;
} else {
state.modalState.checkCardModalV2.selectableOptions = options;
}
});
builder.addCase(fetchCheckCardMetaV2.fulfilled, (state, action) => {
builder.addCase(fetchCheckCardMetasV2.fulfilled, (state, action) => {
const selected = action.payload.selected;
const meta = action.payload.meta;
const metas = action.payload.metas;
const options = selected
? state.modalState.checkCardModalV2.selectedOptions
: state.modalState.checkCardModalV2.selectableOptions;
options.forEach((option) => {
if (option.code == meta.code) {
option.name = meta.name;
option.desc = meta.desc;
metas.forEach((meta) => {
if (option.code == meta.id) {
option.name = meta.text.name;
option.desc = meta.text.desc;
}
});
});
});
};
export const resetCheckCardModalV2Impl: CaseReducer<DuelState> = (state) => {
......
......@@ -69,7 +69,7 @@ export interface ModalState {
code: number;
name?: string;
desc?: string;
response?: number;
response: number;
}[];
};
}
......
......@@ -5,7 +5,7 @@ import {
setCheckCardModalV2IsOpen,
setCheckCardModalV2MinMax,
} from "../../reducers/duel/mod";
import { fetchCheckCardMetaV2 } from "../../reducers/duel/modal/checkCardModalV2Slice";
import { fetchCheckCardMetasV2 } from "../../reducers/duel/modal/checkCardModalV2Slice";
import { AppDispatch } from "../../store";
import MsgSelectUnselectCard = ygopro.StocGameMessage.MsgSelectUnselectCard;
......@@ -26,23 +26,23 @@ export default (
dispatch(setCheckCardModalV2CancelAble(cancelable));
dispatch(setCheckCardModalV2MinMax({ min, max }));
selectableCards.forEach((card) => {
dispatch(
fetchCheckCardMetaV2({
fetchCheckCardMetasV2({
controler,
selected: false,
option: { code: card.code, response: card.response },
options: selectableCards.map((card) => {
return { code: card.code, response: card.response };
}),
})
);
});
selectedCards.forEach((card) => {
dispatch(
fetchCheckCardMetaV2({
fetchCheckCardMetasV2({
controler,
selected: true,
option: { code: card.code },
options: selectedCards.map((card) => {
return { code: card.code, response: card.response };
}),
})
);
});
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment