51 lines
1.0 KiB
TypeScript
51 lines
1.0 KiB
TypeScript
// - Import react components
|
|
import {Reducer, Action} from 'redux'
|
|
|
|
// - Import action types
|
|
import {AuthorizeActionType} from 'constants/authorizeActionType'
|
|
|
|
import { IAuthorizeAction } from './IAuthorizeAction'
|
|
import { AuthorizeState } from './AuthorizeState'
|
|
|
|
|
|
|
|
/**
|
|
* Authorize reducer
|
|
* @param {object} state
|
|
* @param {object} action
|
|
*/
|
|
export let authorizeReducer = (state : AuthorizeState = new AuthorizeState(), action: IAuthorizeAction) =>{
|
|
const { payload } = action
|
|
switch (action.type) {
|
|
case AuthorizeActionType.LOGIN:
|
|
return{
|
|
...state,
|
|
uid: payload.uid,
|
|
authed: true,
|
|
guest:false
|
|
}
|
|
case AuthorizeActionType.LOGOUT:
|
|
return{
|
|
...state,
|
|
uid: 0,
|
|
authed: false,
|
|
guest:true
|
|
}
|
|
|
|
case AuthorizeActionType.SIGNUP:
|
|
return{
|
|
...state,
|
|
uid: payload.userId
|
|
}
|
|
case AuthorizeActionType.UPDATE_PASSWORD:
|
|
return{
|
|
...state,
|
|
updatePassword: payload.updatePassword
|
|
}
|
|
default:
|
|
return state
|
|
|
|
}
|
|
|
|
}
|