Преглед изворни кода

80481 like in SubNav refactor done

Mao пре 4 година
родитељ
комит
c90e0f2a88

+ 7 - 7
packages/app/src/client/services/PageContainer.js

@@ -292,16 +292,16 @@ export default class PageContainer extends Container {
     await this.retrieveLikersAndSeenUsers();
     await this.retrieveLikersAndSeenUsers();
   }
   }
 
 
-  // this method is used only when like happend in search page but not in normal page view.
-  // search page holds state that is not depending on pageContainer
+  // this method is used only when like happend in normal page but not in search page.
+  // noraml page view use the states based on pageContainer but search page holds its own state in SearchResultSunNavButton.
   async updateStateAfterLike() {
   async updateStateAfterLike() {
-    const toggledIsLiked = this.state.isLiked;
+    const toggledIsLiked = !this.state.isLiked;
     await this.setState(state => ({
     await this.setState(state => ({
-      isLiked: !toggledIsLiked,
-      sumOfLikers: toggledIsLiked ? state.sumOfLikers - 1 : state.sumOfLikers + 1,
+      isLiked: toggledIsLiked,
+      sumOfLikers: toggledIsLiked ? state.sumOfLikers + 1 : state.sumOfLikers - 1,
       likerIds: toggledIsLiked
       likerIds: toggledIsLiked
-        ? state.likerIds.filter(id => id !== this.appContainer.currentUserId)
-        : [...this.state.likerIds, this.appContainer.currentUserId],
+        ? [...this.state.likerIds, this.appContainer.currentUserId]
+        : state.likerIds.filter(id => id !== this.appContainer.currentUserId),
     }));
     }));
   }
   }
 
 

+ 2 - 1
packages/app/src/components/LikeButtons.jsx

@@ -41,7 +41,8 @@ class LikeButtons extends React.Component {
       return;
       return;
     }
     }
     try {
     try {
-      await apiv3Put('/page/likes', { pageId, bool: isLiked });
+      const toggleLike = !isLiked;
+      await apiv3Put('/page/likes', { pageId, bool: toggleLike });
       if (onChangeInvoked !== null) {
       if (onChangeInvoked !== null) {
         onChangeInvoked();
         onChangeInvoked();
       }
       }

+ 1 - 1
packages/app/src/components/Navbar/SubNavButtons.jsx

@@ -32,8 +32,8 @@ const SubnavButtons = (props) => {
         logger.error('retrieveBookmarkInfo is null');
         logger.error('retrieveBookmarkInfo is null');
       }
       }
       else {
       else {
-        pageContainer.setStateAfterLike();
         pageContainer.retrieveLikersAndSeenUsers();
         pageContainer.retrieveLikersAndSeenUsers();
+        pageContainer.updateStateAfterLike();
       }
       }
     };
     };