import {update_item, store_items, update_items} from './base'

const initial_state = {
  users: {},
  recruiter_users: [],
  current_user: null,
  current_recipient: null,
  order_by: 'app_name',
  order_ascending: false,
  users_loaded: false,
}

export function users(state = initial_state, action) {
  switch (action.type) {
    case "store_users":
      return store_items({...state, users_loaded: true}, "users", action.users)
    case "set_current_user":
      return Object.assign({}, state, {
        current_user: action.user_id,
      })
    case "set_current_recipient":
      return Object.assign({}, state, {
        current_recipient: action.user_id,
      })
    case "set_order_by":
      if (action.order_by === state.order_by) {
        return Object.assign({}, state, {
          order_ascending: !state.order_ascending,
        })
      } else {
        return Object.assign({}, state, {
          order_by: action.order_by,
        })
      }
    case "store_recruiter_users":
      return {
        ...state,
        recruiter_users: action.recruiter_users,
      }
    case "update_user":
      return update_item(state, "users", action.user)
    case "update_users":
      return update_items(state, "users", action.users)
    default:
      return state
  }
}
