Mao vor 4 Jahren
Ursprung
Commit
7fd9ec9f5f

+ 10 - 2
packages/app/src/components/Navbar/SubNavButtons.jsx

@@ -17,12 +17,20 @@ const SubnavButtons = (props) => {
   const { pageId } = pageContainer.state;
   const { editorMode } = navigationContainer.state;
   const isViewMode = editorMode === 'view';
-
+  const { sumOfLikers, likerIds, isLiked } = pageContainer.state;
   return (
     <>
       {isViewMode && (
         <>
-          {pageContainer.isAbleToShowPageReactionButtons && <PageReactionButtons pageId={pageId} currentUserId={appContainer.currentUserId} />}
+          {pageContainer.isAbleToShowPageReactionButtons && (
+            <PageReactionButtons
+              pageId={pageId}
+              currentUserId={appContainer.state.currentUserId}
+              likerSum={sumOfLikers}
+              likerIds={likerIds}
+              isAlreadyLiked={isLiked}
+            />
+          )}
           {pageContainer.isAbleToShowPageManagement && <PageManagement isCompactMode={isCompactMode} />}
         </>
       )}

+ 11 - 17
packages/app/src/components/PageReactionButtons.tsx

@@ -16,25 +16,19 @@ const LikeButtonsWrapper = (props) => {
 };
 
 const PageReactionButtons : FC<Props> = (props: Props) => {
-  const { pageId, currentUserId } = props;
+  const {
+    pageId, currentUserId, likerSum, likerIds, isAlreadyLiked,
+  } = props;
+  const [sumOflikers, setSumOfLikers] = useState(likerSum);
+  const [likers, setLikers] = useState<string[]>(likerIds);
+  const [isLiked, setIsLiked] = useState(isAlreadyLiked);
 
-
-  const [sumOflikers, setSumOfLikers] = useState(0);
-  const [likers, setLikers] = useState<string[]>([]);
-  const [isLiked, setIsLiked] = useState(true);
-
-  // component did mount
   useEffect(() => {
-    const f = async() => {
-      const {
-        data: { likerIds, sumOfLikers, isLiked },
-      } = await apiv3Get('/page/info', { pageId });
-      setSumOfLikers(sumOfLikers);
-      setLikers(likerIds);
-      setIsLiked(isLiked);
-    };
-    f();
-  }, []);
+    setSumOfLikers(likerSum);
+    setLikers(likerIds);
+    setIsLiked(isAlreadyLiked);
+  }, [props]);
+
 
   const likeInvoked = async() => {
     setSumOfLikers(sumOflikers => (isLiked ? sumOflikers - 1 : sumOflikers + 1));

+ 1 - 1
packages/app/src/components/SearchPage/SearchResultSubNavButton.tsx

@@ -20,7 +20,7 @@ const SearchResultSubNavButton: FC<SearchResultSubNavButtonProps> = (props: Sear
   const { data: pageInfo, error: pageInfoError } = useSWRPageInfo(pageId);
   return (
     <>
-      {pageInfo != null && !pageInfoError && (
+      {pageInfo != null && (
         <PageReactionButtons
           pageId={pageId}
           currentUserId={appContainer.currentUserId}