react-clone-trello

Форк
0
96 строк · 2.7 Кб
1
import { createSlice } from "@reduxjs/toolkit";
2
import { IUser } from "../../../types/userTypes";
3
import {
4
  userRegister,
5
  userLogin,
6
  userLogout,
7
  editUser,
8
  checkUserAuth,
9
} from "./auth";
10

11
type TUserState = {
12
  user: IUser | null;
13
  isRequestFailed: boolean;
14
  isRequestLoading: boolean;
15
  isAuthChecked: boolean;
16
};
17

18
const initialState: TUserState = {
19
  user: null,
20
  isRequestLoading: false,
21
  isRequestFailed: false,
22
  isAuthChecked: false,
23
};
24

25
export const userSlice = createSlice({
26
  name: "user",
27
  initialState,
28
  reducers: {},
29
  extraReducers: (builder) => {
30
    builder
31
      .addCase(userLogin.pending, (state) => {
32
        state.isRequestLoading = true;
33
      })
34
      .addCase(userLogin.fulfilled, (state, action) => {
35
        state.user = action.payload.user;
36
        state.isRequestLoading = false;
37
        state.isRequestFailed = false;
38
      })
39
      .addCase(userLogin.rejected, (state) => {
40
        state.isRequestLoading = false;
41
        state.isRequestFailed = true;
42
      })
43
      .addCase(userRegister.pending, (state) => {
44
        state.isRequestLoading = true;
45
      })
46
      .addCase(userRegister.fulfilled, (state, { payload }) => {
47
        state.user = payload.user;
48
        state.isRequestLoading = false;
49
        state.isRequestFailed = false;
50
      })
51
      .addCase(userRegister.rejected, (state) => {
52
        state.isRequestLoading = false;
53
        state.isRequestFailed = true;
54
      })
55
      .addCase(userLogout.pending, (state) => {
56
        state.isRequestLoading = true;
57
      })
58
      .addCase(userLogout.fulfilled, (state) => {
59
        state.user = null;
60
        state.isRequestFailed = false;
61
        state.isRequestLoading = false;
62
      })
63
      .addCase(userLogout.rejected, (state) => {
64
        state.isRequestFailed = true;
65
      })
66
      .addCase(checkUserAuth.pending, (state) => {
67
        state.isRequestLoading = true;
68
      })
69
      .addCase(checkUserAuth.fulfilled, (state, action) => {
70
        state.isAuthChecked = true;
71
        state.user = action.payload.user;
72
        state.isRequestFailed = false;
73
        state.isRequestLoading = false;
74
      })
75
      .addCase(checkUserAuth.rejected, (state) => {
76
        state.isRequestFailed = true;
77
        state.isAuthChecked = true;
78
        state.isRequestLoading = false;
79
      })
80
      .addCase(editUser.pending, (state) => {
81
        state.isRequestLoading = true;
82
      })
83
      .addCase(editUser.fulfilled, (state, action) => {
84
        state.user = action.payload.user;
85
        state.isRequestFailed = false;
86
        state.isRequestLoading = false;
87
      })
88
      .addCase(editUser.rejected, (state) => {
89
        state.isRequestFailed = true;
90
        state.isRequestLoading = false;
91
      });
92
  },
93
});
94

95
export const {} = userSlice.actions;
96
export default userSlice.reducer;
97

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

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

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

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