rutube

Форк
0
/
feedback.ts 
76 строк · 1.4 Кб
1
import { createSlice,PayloadAction } from "@reduxjs/toolkit";
2

3
import IFeedback from "../utils/interfaces/IFeedback";
4

5
type TState =
6
	{
7
		feedback: IFeedback;
8
		extraQuestion: IFeedback[];
9
		isComleted: boolean,
10
		error: string | null;
11
	};
12
const initialState: TState =
13
{
14
	feedback: {
15
		questionID: 0
16
	},
17
	extraQuestion: [
18
		{
19
			questionID: 1
20
		},
21
		{
22
			questionID: 2
23
		},
24
		{
25
			questionID: 3
26
		},
27
		{
28
			questionID: 4
29
		},
30
		{
31
			questionID: 5
32
		},
33
		{
34
			questionID: 6
35
		}
36
	],
37
	error: null,
38
	isComleted: false
39
};
40

41
const feedbackSlice = createSlice(
42
	{
43
		name: "feedback",
44
		initialState,
45
		reducers:
46
		{
47
			setFeedback: (state,action: PayloadAction<IFeedback>) =>
48
			{
49
				if (action.payload.questionID === 0)
50
					state.feedback = action.payload;
51
				else
52
				{
53
					const isExists = state.extraQuestion.findIndex((elem) => elem.questionID === action.payload.questionID);
54
					if (isExists !== -1)
55
						state.extraQuestion[isExists].responseID = action.payload.responseID;
56
					else
57
						state.extraQuestion.push(action.payload);
58
				}
59

60

61
			},
62
			setFeedbackAll: (state,action: PayloadAction<IFeedback[]>) =>
63
			{
64
				state.extraQuestion = action.payload;
65
			},
66
			setFinish: (state,action: PayloadAction<boolean>) =>
67
			{
68
				state.isComleted = action.payload;
69
			}
70
		}
71
	}
72
);
73

74
export const { setFeedback,setFeedbackAll,setFinish } = feedbackSlice.actions;
75

76
export default feedbackSlice.reducer;
77

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.