70 lines
No EOL
2 KiB
JavaScript
70 lines
No EOL
2 KiB
JavaScript
import { createSlice } from "@reduxjs/toolkit";
|
|
|
|
const initialState = {
|
|
currentUser: null,
|
|
error: null,
|
|
loading: false,
|
|
};
|
|
|
|
const userSlice = createSlice({
|
|
name: 'user',
|
|
initialState,
|
|
reducers:{
|
|
loginStart: (state) => {
|
|
state.loading = true;
|
|
},
|
|
loginSuccess: (state, action) => {
|
|
state.currentUser = action.payload;
|
|
state.loading = false;
|
|
state.error = null;
|
|
},
|
|
loginFailure: (state, action) => {
|
|
state.error = action.payload;
|
|
state.loading = false;
|
|
},
|
|
updateUserStart: (state) => {
|
|
state.loading = true;
|
|
},
|
|
updateUserSuccess: (state, action) => {
|
|
state.currentUser = action.payload;
|
|
state.loading = false;
|
|
state.error = null;
|
|
},
|
|
updateUserFailure: (state, action) => {
|
|
state.error = action.payload;
|
|
state.loading = false;
|
|
},
|
|
deleteUserStart: (state) => {
|
|
state.loading = true;
|
|
},
|
|
deleteUserSuccess: (state) => {
|
|
state.currentUser = null;
|
|
state.loading = false;
|
|
state.error = null;
|
|
},
|
|
deleteUserFailure: (state, action) => {
|
|
state.error = action.payload;
|
|
state.loading = false;
|
|
},
|
|
logoutUserStart: (state) => {
|
|
state.loading = true;
|
|
},
|
|
logoutUserSuccess: (state) => {
|
|
state.currentUser = null;
|
|
state.loading = false;
|
|
state.error = null;
|
|
},
|
|
logoutUserFailure: (state, action) => {
|
|
state.error = action.payload;
|
|
state.loading = false;
|
|
},
|
|
|
|
}
|
|
});
|
|
|
|
export const {
|
|
loginStart, loginSuccess, loginFailure,
|
|
updateUserStart, updateUserSuccess, updateUserFailure,
|
|
deleteUserStart, deleteUserSuccess, deleteUserFailure,
|
|
logoutUserStart, logoutUserSuccess, logoutUserFailure} = userSlice.actions;
|
|
export default userSlice.reducer; |