37 lines
888 B
TypeScript
37 lines
888 B
TypeScript
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
|
|
import { UserPayloadObject } from '../interfaces'
|
|
|
|
interface MainState {
|
|
userName: string
|
|
userEmail: null | string
|
|
userAvatar: null | string
|
|
isFieldFocusRegistered: boolean
|
|
}
|
|
|
|
const initialState: MainState = {
|
|
/* User */
|
|
userName: '',
|
|
userEmail: null,
|
|
userAvatar: null,
|
|
|
|
/* Field focus with ctrl+k (to register only once) */
|
|
isFieldFocusRegistered: false,
|
|
}
|
|
|
|
export const mainSlice = createSlice({
|
|
name: 'main',
|
|
initialState,
|
|
reducers: {
|
|
setUser: (state, action: PayloadAction<UserPayloadObject>) => {
|
|
state.userName = action.payload.name
|
|
state.userEmail = action.payload.email
|
|
state.userAvatar = action.payload.avatar
|
|
},
|
|
},
|
|
})
|
|
|
|
// Action creators are generated for each case reducer function
|
|
export const { setUser } = mainSlice.actions
|
|
|
|
export default mainSlice.reducer
|