import Immutable from 'seamless-immutable'

import * as actions from './actions'


const initialState = Immutable.from({
  {{#if fetch}}
  isFetching: false,
  error: false,
  items: [],
  {{else}}
  XXX: YYY,
  {{/if}}
})

const {{name}} = (state = initialState, { type, payload, error }) => {
  switch (type) {
    {{#if fetch}}
    case actions.REQUEST_{{fetchConst}}:
      return state.merge({
        error: false,
        isFetching: true,
      })
    case actions.RECEIVE_{{fetchConst}}:
      if (error) {
        return state.merge({
          error: true,
          isFetching: false,
        })
      }

      return state.merge({
        isFetching: false,
        items: payload,
      })
    {{else}}
    case actions.ACTION_TYPE:
      return state.set('XXX', payload)
    {{/if}}
    default:
      return state
  }
}

export default {{name}}
