// import JSONAPI from 'vuejs/api/json-axios'
import REST from 'vuejs/api/rest-axios'
// import MA from 'vuejs/api/ma-axios'
// import qs from 'querystring-es3'

export default {
  namespaced: true,

  // initial state
  state: {
    contenttype: null,
    items: [],
    page: 0,
    // infinteState will come from vue-infinite-loading plugin
    // implemented in vuejs/components/Content/Base.vue
    infiniteLoadingState: null
  },

  // getters
  getters: {},

  // mutations
  mutations: {
    setItems (state, items) {
      state.items = state.items.concat(items)
    },
    incrementPage (state) {
      state.page += 1
    },
    setInfiniteState (state, infiniteLoadingstate) {
      state.infiniteLoadingState = infiniteLoadingstate
    }
  },

  // actions
  actions: {
    getItems ({ dispatch, commit, state }) {
      return REST.get(`/blabla_rest?_format=json&page=${state.page}`, {})
        .then(({ data }) => {
          console.log('blabla REST: data', data)
          if (data.length) {
            commit('setItems', data)
            // console.log('items.length', this.items.length)
            if (state.infiniteLoadingState) { state.infiniteLoadingState.loaded() }
          } else {
            if (state.infiniteLoadingState) { state.infiniteLoadingState.complete() }
          }
        })
        .catch((error) => {
          console.warn('Issue with blabla getitems', error)
          Promise.reject(error)
        })
    },
    nextPage ({ dispatch, commit, state }, $infiniteLoadingstate) {
      console.log('blabla nextPage', $infiniteLoadingstate)
      commit('incrementPage')
      commit('setInfiniteState', $infiniteLoadingstate)
      dispatch('getItems')
    },
    getItemIndex ({ dispatch, commit, state }, nid) {
      console.log('getItemIndex nid', nid)
      return state.items.findIndex((e) => {
        // console.log('findIndex', e.nid, nid)
        return parseInt(e.nid) === nid
      })
    },
    getPrevNextItems ({ dispatch, commit, state }, index) {
      // TODO: preload prev and next items
      return {
        prev: state.items[index - 1],
        next: state.items[index + 1]
      }
    }
  }
}
