render.app.frontend/src/redux/slices/userCrudSlice.js

51 lines
1.8 KiB
JavaScript

import { createSlice } from '@reduxjs/toolkit'
import userCrudAsyncThunk from '../asyncThunks/userCrudAsyncThunk'
const userCrudSlice = createSlice(
{
name: 'user',
initialState: {
users_list: [],
user_get: {},
user_register: {},
user_update: {},
user_delete: '',
info: ''
},
reducers: {},
extraReducers: {
[userCrudAsyncThunk.fetchGetAllUsers.fulfilled.type]: (state, action) => {
state.users_list = action.payload.data
},
[userCrudAsyncThunk.fetchGetOneUser.fulfilled.type]: (state, action) => {
state.user_get = action.payload.data
},
[userCrudAsyncThunk.fetchRegister.fulfilled.type]: (state, action) => {
try {
state.user_register = {
id: action.payload.data.id,
username: action.payload.data.username,
email: action.payload.data.email
}
state.info = 'register success'
} catch {
state.info = 'register failed'
}
},
[userCrudAsyncThunk.fetchUpdateUser.fulfilled.type]: (state, action) => {
state.user_update = action.payload.data
},
[userCrudAsyncThunk.fetchDeleteUser.fulfilled.type]: (state, action) => {
state.users_list = []
state.user_get = {}
state.user_register = {}
state.user_update = {}
state.user_delete = 'true'
}
}
}
)
export const userCrudReducer = userCrudSlice.reducer
export const userCrudSelector = state => state.userCrudReducer