You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							39 lines
						
					
					
						
							1.1 KiB
						
					
					
				| import { createSlice, PayloadAction } from '@reduxjs/toolkit';
 | |
| import { fetchUser } from './asyncActions';
 | |
| import { User, Status, UserSliceState } from './types';
 | |
| 
 | |
| const initialState: UserSliceState = {
 | |
|     user_items: [],
 | |
|     user_status: Status.LOADING, // loading | success | error
 | |
| };
 | |
| 
 | |
| const userSlice = createSlice({
 | |
|   name: 'categories',
 | |
|   initialState,
 | |
|   reducers: {
 | |
|     setUser(user_status, action: PayloadAction<User[]>) {
 | |
|         user_status.user_items = action.payload;
 | |
|     },
 | |
|   },
 | |
| 
 | |
|   extraReducers: (builder) => {
 | |
|     builder.addCase(fetchUser.pending, (user_status) => {
 | |
|         user_status.user_status = Status.LOADING;
 | |
|         user_status.user_items = [];
 | |
|     });
 | |
| 
 | |
|     builder.addCase(fetchUser.fulfilled, (user_status, action) => {
 | |
|         user_status.user_status = Status.SUCCESS;
 | |
|         user_status.user_items = action.payload;
 | |
|     });
 | |
| 
 | |
|     builder.addCase(fetchUser.rejected, (user_status) => {
 | |
|         user_status.user_status = Status.ERROR;
 | |
|         user_status.user_items = [];
 | |
|     });
 | |
|   },
 | |
| });
 | |
| 
 | |
| export const { setUser } = userSlice.actions;
 | |
| 
 | |
| export default userSlice.reducer; |