Masterchoc

Untitled

May 12th, 2018
135
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import api from '../../../api/front/posts'
  2. import * as types from '../../mutations-types'
  3.  
  4. export default {
  5.     state: {
  6.         posts : []
  7.     },
  8.     getters: {
  9.         posts: state => state.posts,
  10.         getLastCreated: state => {
  11.             if(state.posts.length > 0)
  12.                 return state.posts[state.posts.length - 1].createdAt;
  13.             else
  14.                 return null
  15.         }
  16.     },
  17.     actions: {
  18.         prependPost(store, post) {
  19.             if(!post.replies) post.replies = [];
  20.             store.commit(types.PREPEND_POST, post);
  21.         },
  22.         appendPost(store, post) {
  23.             if(!post.replies) post.replies = [];
  24.             store.commit(types.APPEND_POST, post);
  25.         },
  26.         appendReply(store, reply) {
  27.             store.commit(types.APPEND_REPLY, reply);
  28.         },
  29.         addPost(store, ctx) {
  30.             api.addPost(ctx.data, payload =>
  31.             {
  32.                 if(payload.progress && !payload.data)
  33.                     ctx.progress = payload.progress;
  34.                 else if(!payload.progress && payload.data)
  35.                 {
  36.                     ctx.resetForm();
  37.                     if(!payload.data.replies)
  38.                         payload.data.replies = [];
  39.  
  40.                     if(typeof payload.data.postId != 'undefined') {
  41.  
  42.                         store.commit(types.APPEND_WALL_REPLY, payload.data);
  43.                         store.commit(types.APPEND_REPLY, payload.data);
  44.                     }
  45.                     else if(typeof payload.data.wallId != 'undefined') {
  46.                         store.commit(types.PREPEND_WALL_POST, payload.data);
  47.                         store.commit(types.PREPEND_POST, payload.data);
  48.                     }
  49.                     else {
  50.                         store.commit(types.PREPEND_POST, payload.data);
  51.                     }
  52.                 }
  53.             });
  54.         },
  55.         setPosts(store, ctx) {
  56.             api.getPosts({}, data => {
  57.                 ctx.loading = false;
  58.                 store.commit(types.SET_POSTS, data.posts);
  59.             })
  60.         },
  61.         loadMorePosts(store, ctx) {
  62.             if(ctx.since) {
  63.                 api.loadPosts(ctx.since, data => {
  64.                     ctx.loading = false;
  65.                     data.posts.forEach(post => {
  66.                         store.commit(types.APPEND_POST, post);
  67.                     })
  68.                 });
  69.             }
  70.         },
  71.         deletePost(store, id) {
  72.             api.deletePost(id, data => {
  73.                 if(typeof data != 'undefined')
  74.                     store.commit(types.DELETE_POST, id);
  75.             });
  76.         }
  77.     },
  78.     mutations: {
  79.         [types.APPEND_REPLY](state, reply) {
  80.             let post = state.posts.find(p => p.id == reply.postId);
  81.             if(post) {
  82.                 post.nbReplies++;
  83.                 post.replies.push(reply);
  84.             }
  85.         },
  86.         [types.PREPEND_POST](state, post) {
  87.             state.posts.unshift(post);
  88.         },
  89.         [types.APPEND_POST](state, post) {
  90.             state.posts.push(post);
  91.         },
  92.         [types.SET_POSTS](state, posts) {
  93.             state.posts = posts;
  94.         },
  95.         [types.DELETE_POST](state, id) {
  96.             state.posts = state.posts.filter(p => p.id != id);
  97.         }
  98.     }
  99. }
RAW Paste Data