// 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 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] } } } }