blog.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const applyParamsToUrl = (url, filter) => {
  2. if (filter) {
  3. let filteredEntities = ''
  4. if (url.indexOf('?') === -1) {
  5. url += '?'
  6. } else {
  7. url += '&'
  8. }
  9. Object.keys(filter).forEach(key => {
  10. filteredEntities += `${key}=${filter[key]}&`
  11. })
  12. if (filteredEntities.slice(-1) === '&') {
  13. filteredEntities = filteredEntities.slice(0, -1)
  14. }
  15. return url + filteredEntities
  16. }
  17. return url
  18. }
  19. export const state = () => ({
  20. item: {},
  21. items: {
  22. all: [],
  23. featured: []
  24. }
  25. })
  26. export const actions = {
  27. async fetchBlogs({commit, state}) {
  28. const data = await this.$axios.$get('/api/v1/blogs')
  29. if(data.isAxiosError === true){
  30. console.log(data.data)
  31. return Error('')
  32. }
  33. const { blogs } = data
  34. commit('setBlogs', {resource: 'all', blogs})
  35. return state.items.all
  36. },
  37. // /api/v1/blogs?filter[featured]=true
  38. async fetchFeaturedBlogs({commit, state}, filter) {
  39. const url = applyParamsToUrl('/api/v1/blogs', filter)
  40. const data = await this.$axios.$get(url)
  41. if(data.isAxiosError === true){
  42. console.log(data.data)
  43. return Error('')
  44. }
  45. const { blogs } = data
  46. commit('setBlogs', {resource: 'featured', blogs})
  47. return state.items.featured
  48. },
  49. async fetchBlogBySlug({commit, state}, slug) {
  50. const blog = await this.$axios.$get(`/api/v1/blogs/s/${slug}`)
  51. if(blog.isAxiosError === true){
  52. console.log(blog.data)
  53. return Error('')
  54. }
  55. debugger;
  56. commit('setBlog', blog)
  57. return state.item
  58. }
  59. }
  60. export const mutations = {
  61. setBlogs(state, {resource, blogs}) {
  62. state.items[resource] = blogs
  63. },
  64. setBlog(state, blog) {
  65. state.item = blog
  66. }
  67. }