blog.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import Vue from 'vue'
  2. export const state = () => ({
  3. item: {},
  4. items: {
  5. all: [],
  6. featured: []
  7. },
  8. pagination: {
  9. count: 0, // Count of all of our published blogs
  10. pageCount: 0, // How many pages we want to display
  11. pageSize: 6, // How many items we want to display per page
  12. pageNum: 1 // Current page
  13. }
  14. })
  15. export const actions = {
  16. // /api/v1/blogs?pageNum=10&pageSize=2
  17. async fetchBlogs({commit, state}, filter) {
  18. const url = this.$applyParamsToUrl('/api/v1/blogs', filter)
  19. const data = await this.$axios.$get(`${url}`)
  20. if(data.isAxiosError === true){
  21. console.log(data.data)
  22. return Error('')
  23. }
  24. // const { blogs } = data
  25. // commit('setBlogs', {resource: 'all', blogs})
  26. const { blogs, count, pageCount } = data
  27. commit('setBlogs', {resource: 'all', blogs})
  28. commit('setPagination', {count, pageCount})
  29. return state.items.all
  30. },
  31. // /api/v1/blogs?filter[featured]=true
  32. async fetchFeaturedBlogs({commit, state}, filter) {
  33. const url = this.$applyParamsToUrl('/api/v1/blogs', filter)
  34. const data = await this.$axios.$get(url)
  35. if(data.isAxiosError === true){
  36. console.log(data.data)
  37. return Error('')
  38. }
  39. const { blogs } = data
  40. commit('setBlogs', {resource: 'featured', blogs})
  41. return state.items.featured
  42. },
  43. async fetchBlogBySlug({commit, state}, slug) {
  44. const blog = await this.$axios.$get(`/api/v1/blogs/s/${slug}`)
  45. if(blog.isAxiosError === true){
  46. console.log(blog.data)
  47. return Error('')
  48. }
  49. commit('setBlog', blog)
  50. return state.item
  51. }
  52. }
  53. export const mutations = {
  54. setBlogs(state, {resource, blogs}) {
  55. state.items[resource] = blogs
  56. },
  57. setBlog(state, blog) {
  58. state.item = blog
  59. },
  60. setPage(state, currentPage) {
  61. Vue.set(state.pagination, 'pageNum', currentPage)
  62. },
  63. setPagination(state, {count, pageCount}) {
  64. Vue.set(state.pagination, 'count', count)
  65. Vue.set(state.pagination, 'pageCount', pageCount)
  66. }
  67. }