Skip to content
Snippets Groups Projects
user.reducer.ts 1.04 KiB
Newer Older
  • Learn to ignore specific revisions
  • Matthias Feyll's avatar
    Matthias Feyll committed
    import { RbacUser } from '@api/api'
    
    import { setCookieValue } from '@helper/coookie'
    
    Matthias Feyll's avatar
    Matthias Feyll committed
    import { createSlice, PayloadAction } from '@reduxjs/toolkit'
    
    
    export interface UserSliceState {
    
        // defined by the frontend user input. This value is getting compared with the backend response
    
        username: string
        user: RbacUser | null
    
    }
    
    const initialState: UserSliceState = {
    
        username: '',
        user: null,
    
    }
    
    const userSlice = createSlice({
        name: 'user',
        initialState,
        reducers: {
    
            setToken: (state, action: PayloadAction<{ token: string; username: string } | null>) => {
                const token = action.payload?.token || ''
                setCookieValue('token', token)
    
    
                state.username = action.payload?.username || ''
    
            setUser: (state, action: PayloadAction<RbacUser>) => {
                state.user = action.payload
            },
    
        },
    })
    
    export const { setToken } = userSlice.actions
    
    export const { setUser } = userSlice.actions
    
    
    export default userSlice.reducer
    
    Matthias Feyll's avatar
    Matthias Feyll committed
    export const userReducerPath = userSlice.reducerPath