소스 검색

fix render collection page, refactoring recursion functiion in redux

makstravm 2 년 전
부모
커밋
9c68883059
4개의 변경된 파일36개의 추가작업 그리고 73개의 파일을 삭제
  1. 1 1
      src/actions/index.js
  2. 2 6
      src/pages/CollectionPage.jsx
  3. 31 64
      src/redux/reducers/postFeed-reducer.js
  4. 2 2
      src/redux/saga/index.js

+ 1 - 1
src/actions/index.js

@@ -62,7 +62,7 @@ export const actionUpsertAboutMe = (myData) =>
 
 //*************** Action Posts Feed ******************//
 
-export const actionGetPostAC = (postData) => ({ type: 'GET-POST', newResult: postData })
+
 export const actionAddPostsFeedAC = (postsData, count) => ({ type: 'ADD-POSTS-FEED', newResult: postsData, count })
 export const actionRemovePostsFeedAC = () => ({ type: 'REMOVE-POSTS-FEED' })
 export const actionPostsFeed = () => ({ type: 'POSTS_FEED' })

+ 2 - 6
src/pages/CollectionPage.jsx

@@ -15,16 +15,12 @@ export const CollectionPage = ({ posts, onLoadPosts, postsRemove }) => {
             postsRemove()
         }
     }, [])
-
+    console.log(posts);
     return (
         <Container>
             <CPreloader promiseName='onLoadMyCollections' />
             <Divider><Title level={1}>Collections</Title></Divider>
-            {posts.lenght
-                ? <CPosts />
-                : <Title level={4}>
-                    The collection is empty. Add posts to your collection
-                </Title>}
+            <CPosts />
         </Container>
     )
 }

+ 31 - 64
src/redux/reducers/postFeed-reducer.js

@@ -1,5 +1,22 @@
 export const postsFeedReducer = (state = {}, { type, findId, newResult, userData = {}, count = null }) => {
+
     const { posts } = state
+
+    const upsertSubComments = (commentList, id, nR, find) => {
+        return commentList.map(c => {
+            if (c._id === id) {
+                return { ...c, [find]:  nR }
+            } else if (c?.answers?.length) {
+                return {
+                    ...c,
+                    answers: upsertSubComments(c.answers, id, nR, find)
+                }
+            } else {
+                return { ...c }
+            }
+        })
+    }
+
     const types = {
 
         'ADD-POSTS-FEED': () => ({
@@ -10,8 +27,6 @@ export const postsFeedReducer = (state = {}, { type, findId, newResult, userData
             count
         }),
 
-        'GET-POST': () => ({ ...state, posts: { ...newResult } }),
-
         'ADD-PROFILE-DATA': () => ({
             ...state,
             posts: !!posts ? [...posts, ...newResult] : [...newResult],
@@ -48,78 +63,30 @@ export const postsFeedReducer = (state = {}, { type, findId, newResult, userData
                 : { ...state.posts, comments: [...newResult] }
         }),
 
-        'UPDATE-SUBCOMMENT': () => {
-            const upsertSubComments = (commentList, id, nR) => {
-                return commentList.map(c => {
-                    if (c._id === id) {
-                        return { ...c, answers: [...nR] }
-                    } else if (c?.answers?.length) {
-                        return {
-                            ...c,
-                            answers: upsertSubComments(c.answers, id, nR)
-                        }
-                    } else {
-                        return { ...c }
-                    }
-                })
-            }
-            return ({
-                ...state, posts: { ...state.posts, comments: upsertSubComments(posts.comments, findId, newResult) }
-            })
-        },
-
-        'EDIT-COMMENT': () => {
-            const { _id, text } = newResult
-            const editComments = (commentList, id, nR) => {
-                return commentList.map(c => {
-                    if (c._id === id) {
-                        return { ...c, text: nR }
-                    } else if (c?.answers?.length) {
-                        return {
-                            ...c,
-                            answers: editComments(c.answers, id, nR)
-                        }
-                    } else {
-                        return { ...c }
-                    }
-                })
-            }
-            return ({
-                ...state, posts: { ...state.posts, comments: editComments(posts.comments, _id, text) }
-            })
-        },
-
-        'UPSERT-LIKE-COMMENT': () => {
-            const upsertLikeComments = (commentList, id, nR) => {
-                return commentList.map(c => {
-                    if (c._id === id) {
-                        return { ...c, likes: [...nR] }
-                    } else if (c?.answers?.length) {
-                        return {
-                            ...c,
-                            answers: upsertLikeComments(c.answers, id, nR)
-                        }
-                    } else {
-                        return { ...c }
-                    }
-                })
-            }
+        'UPDATE-SUBCOMMENT': () => ({
+            ...state, posts: { ...state.posts, comments: upsertSubComments(posts.comments, findId, newResult, 'answers') }
+        }),
 
-            return ({
-                ...state, posts: {
-                    ...state.posts, comments: upsertLikeComments(posts.comments, findId, newResult)
-                }
-            })
-        },
+        'EDIT-COMMENT': () => ({
+            ...state, posts: { ...state.posts, comments: upsertSubComments(posts.comments, findId, newResult.text, 'text') }
+        }),
+
+        'UPSERT-LIKE-COMMENT': () => ({
+            ...state, posts: {
+                ...state.posts, comments: upsertSubComments(posts.comments, findId, newResult, 'likes')
+            }
+        }),
 
         'UPDATE-FOLLOWERS': () => ({
             ...state,
             userData: { ...state.userData, followers: [...newResult] }
         }),
     }
+    
     if (type in types) {
         return types[type]()
     }
+
     return state
 }
 

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2 - 2
src/redux/saga/index.js