feedReducer.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. export const feedReducer = (
  2. state = {},
  3. { skip, type, newPosts = [], postId, postsFeed, postsFeedCount,newPostsFeedCount, newResult },
  4. ) => {
  5. const types = {
  6. 'ADD-POSTS': () => {
  7. return {
  8. ...state,
  9. postsFeed: state?.postsFeed ? [...state.postsFeed, ...newPosts] : [...newPosts],
  10. postsFeedCount: postsFeedCount ? postsFeedCount : newPostsFeedCount
  11. }
  12. },
  13. 'COUNT': () => {
  14. return {
  15. ...state,
  16. postsFeedCount: postsFeedCount,
  17. }
  18. },
  19. 'POSTS': () => {
  20. return {
  21. ...state,
  22. postsFeed: postsFeed ,
  23. }
  24. },
  25. 'CLEAR_POSTS': () => ({
  26. postsFeed: [],
  27. postsFeedCount: 0,
  28. }),
  29. 'LIKE_POST_FEED': () => ({
  30. ...state,
  31. postsFeed: postsFeed?.map((p) =>
  32. p._id === postId ? (p = { ...p, likes: [...newResult] }) : p,
  33. ),
  34. }),
  35. 'ADD_COMMENT_POSTS': () => ({
  36. ...state,
  37. postsFeed: postsFeed?.map((p) =>
  38. p._id === postId ? (p = { ...p, comments: [...newResult] }) : p,
  39. ),
  40. }),
  41. }
  42. if (type in types) {
  43. return types[type]()
  44. }
  45. return state
  46. }