This repository has been archived on 2025-09-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
resolver/app/reducers/users/userReducer.ts
2017-10-10 16:39:02 +07:00

79 lines
1.5 KiB
TypeScript

// - Import action types
import {UserActionType} from 'constants/userActionType'
// - Import domain
import { User,Profile } from 'domain/users'
import { UserState } from './UserState'
import { IUserAction } from './IUserAction'
/**
* User reducer
*/
export let userReducer = (state: UserState = new UserState(), action: IUserAction) => {
const { payload } = action
switch (action.type) {
case UserActionType.USER_INFO:
return {
...state,
info: {
...state.info,
[payload.uid]: {
...payload.info
}
}
}
case UserActionType.ADD_USER_INFO:
return {
...state,
info: {
...state.info,
[payload.uid]: {
...payload.info
}
},
loaded: true
}
case UserActionType.ADD_PEOPLE_INFO:
return {
...state,
info: {
...state.info,
...payload
}
}
case UserActionType.UPDATE_USER_INFO:
return {
...state,
info: {
...state.info,
[payload.uid]: {
...state.info![payload.uid],
...payload.info
}
}
}
case UserActionType.CLEAR_ALL_DATA_USER:
return new UserState()
case UserActionType.CLOSE_EDIT_PROFILE:
return {
...state,
openEditProfile: false
}
case UserActionType.OPEN_EDIT_PROFILE:
return {
...state,
openEditProfile: true
}
default:
return state
}
}