51 lines
1.8 KiB
JavaScript
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 |