blog.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. function separateBlogs(blogs) {
  2. const published = []
  3. const drafts = []
  4. blogs.forEach(blog => {
  5. blog.status === 'active' ? drafts.push(blog) : published.push(blog)
  6. })
  7. return {published, drafts}
  8. }
  9. export const state = () => ({
  10. items: {
  11. drafts: [],
  12. published: []
  13. },
  14. item: {},
  15. isSaving: false
  16. })
  17. export const actions = {
  18. async createBlog({commit}, blogData) {
  19. commit('setIsSaving', true)
  20. console.log('instructor/blog.js actions createBlog call axios.$post->blogData')
  21. const blog = await this.$axios.$post('/api/v1/blogs', blogData)
  22. if(blog.isAxiosError === true){
  23. commit('setIsSaving', false)
  24. console.log(blog.data)
  25. return Error('')
  26. }
  27. console.log('instructor/blog.js actions createBlog done axios.$post->blogData')
  28. commit('setIsSaving', false)
  29. return blog
  30. },
  31. async fetchBlogById({commit}, blogId) {
  32. console.log('instructor/blog.js actions fetchBlogById call axios.$get->blogId')
  33. const blog = await this.$axios.$get(`/api/v1/blogs/${blogId}`)
  34. if(blog.isAxiosError === true){
  35. console.log(blog.data)
  36. return Error('')
  37. }
  38. console.log('instructor/blog.js actions fetchBlogById done axios.$get->blogId')
  39. console.log('courses.js mutations call setBlog')
  40. commit('setBlog', blog)
  41. console.log('courses.js mutations done setBlog')
  42. },
  43. async fetchUserBlogs({commit, state}) {
  44. const blogs = await this.$axios.$get('/api/v1/blogs/me')
  45. if(blogs.isAxiosError === true){
  46. console.log(blog.data)
  47. return Error('')
  48. }
  49. const { published, drafts } = separateBlogs(blogs)
  50. commit('setBlogs', {resource: 'drafts', items: drafts})
  51. commit('setBlogs', {resource: 'published', items: published})
  52. return { published, drafts }
  53. },
  54. async deleteBlog({commit, state}, blog) {
  55. const resource = blog.status === 'active' ? 'drafts' : 'published'
  56. const result = this.$axios.$delete(`/api/v1/blogs/${blog._id}`)
  57. if(result.isAxiosError === true){
  58. console.log(result.data)
  59. return Error('')
  60. }
  61. const index = state.items[resource].findIndex((b) => b._id === blog._id )
  62. commit('deleteBlog', {resource, index})
  63. return true
  64. },
  65. async updateBlog({commit, state}, {data, id}) {
  66. console.log('instructor/blog.js actions updateBlog call axios.$patch-> Id, data')
  67. const blog = await this.$axios.$patch(`/api/v1/blogs/${id}`, data)
  68. if(blog.isAxiosError === true){
  69. console.log(blog.data)
  70. return Error('')
  71. }
  72. console.log('instructor/blog.js actions updateBlog done axios.$patch-> Id, data')
  73. console.log('courses.js mutations call setBlog')
  74. commit('setBlog', blog)
  75. console.log('courses.js mutations done setBlog')
  76. return state.item
  77. }
  78. }
  79. export const mutations = {
  80. setBlog(state, blog) {
  81. state.item = blog
  82. },
  83. setBlogs(state, {resource, items}) {
  84. state.items[resource] = items
  85. },
  86. deleteBlog(state, {resource, index}) {
  87. state.items[resource].splice(index, 1)
  88. },
  89. setIsSaving(state, isSaving) {
  90. state.isSaving = isSaving
  91. }
  92. }