const applyParamsToUrl = (url, filter) => { if (filter) { let filteredEntities = '' if (url.indexOf('?') === -1) { url += '?' } else { url += '&' } Object.keys(filter).forEach(key => { filteredEntities += `${key}=${filter[key]}&` }) if (filteredEntities.slice(-1) === '&') { filteredEntities = filteredEntities.slice(0, -1) } return url + filteredEntities } return url } export const state = () => ({ item: {}, items: { all: [], featured: [] } }) export const actions = { async fetchBlogs({commit, state}) { const data = await this.$axios.$get('/api/v1/blogs') if(data.isAxiosError === true){ console.log(data.data) return Error('') } const { blogs } = data commit('setBlogs', {resource: 'all', blogs}) return state.items.all }, // /api/v1/blogs?filter[featured]=true async fetchFeaturedBlogs({commit, state}, filter) { const url = applyParamsToUrl('/api/v1/blogs', filter) const data = await this.$axios.$get(url) if(data.isAxiosError === true){ console.log(data.data) return Error('') } const { blogs } = data commit('setBlogs', {resource: 'featured', blogs}) return state.items.featured }, async fetchBlogBySlug({commit, state}, slug) { const blog = await this.$axios.$get(`/api/v1/blogs/s/${slug}`) if(blog.isAxiosError === true){ console.log(blog.data) return Error('') } debugger; commit('setBlog', blog) return state.item } } export const mutations = { setBlogs(state, {resource, blogs}) { state.items[resource] = blogs }, setBlog(state, blog) { state.item = blog } }