rutube
1import { createSlice,PayloadAction } from "@reduxjs/toolkit";2
3import IFeedback from "../utils/interfaces/IFeedback";4
5type TState =6{7feedback: IFeedback;8extraQuestion: IFeedback[];9isComleted: boolean,10error: string | null;11};12const initialState: TState =13{
14feedback: {15questionID: 016},17extraQuestion: [18{19questionID: 120},21{22questionID: 223},24{25questionID: 326},27{28questionID: 429},30{31questionID: 532},33{34questionID: 635}36],37error: null,38isComleted: false39};40
41const feedbackSlice = createSlice(42{43name: "feedback",44initialState,45reducers:46{47setFeedback: (state,action: PayloadAction<IFeedback>) =>48{49if (action.payload.questionID === 0)50state.feedback = action.payload;51else52{53const isExists = state.extraQuestion.findIndex((elem) => elem.questionID === action.payload.questionID);54if (isExists !== -1)55state.extraQuestion[isExists].responseID = action.payload.responseID;56else57state.extraQuestion.push(action.payload);58}59
60
61},62setFeedbackAll: (state,action: PayloadAction<IFeedback[]>) =>63{64state.extraQuestion = action.payload;65},66setFinish: (state,action: PayloadAction<boolean>) =>67{68state.isComleted = action.payload;69}70}71}72);73
74export const { setFeedback,setFeedbackAll,setFinish } = feedbackSlice.actions;75
76export default feedbackSlice.reducer;77