// - 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,
        isVerifide: payload.isVerifide
      }
    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

  }

}
