From c3be8425a2a0b4e1d462cd67dbb3009d12af1791 Mon Sep 17 00:00:00 2001
From: Lukas <lukas.budginas@gmail.com>
Date: Fri, 3 Jan 2025 16:51:39 +0200
Subject: [PATCH] Create separate compoennts for post content and post comments

---
 components/post/PostComments.tsx | 28 +++++++++++++++++++
 components/post/PostContent.tsx  | 48 ++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+)
 create mode 100644 components/post/PostComments.tsx
 create mode 100644 components/post/PostContent.tsx

diff --git a/components/post/PostComments.tsx b/components/post/PostComments.tsx
new file mode 100644
index 00000000..7c137afb
--- /dev/null
+++ b/components/post/PostComments.tsx
@@ -0,0 +1,28 @@
+import Hive from "@/types/Hive";
+import PostContent from "./PostContent";
+
+interface PostCommentsProps {
+  comments: Hive.Content[];
+}
+
+const PostComments: React.FC<PostCommentsProps> = ({ comments }) => {
+  if (!comments || !comments.length) return null;
+
+  return comments.map((comment) => {
+    return (
+      <div
+        className="flex mt-4 justify-center"
+        key={comment.id}
+      >
+        <div className="w-[70%]">
+          <PostContent
+            active_votes={comment.active_votes}
+            data={comment}
+          />
+        </div>
+      </div>
+    );
+  });
+};
+
+export default PostComments;
diff --git a/components/post/PostContent.tsx b/components/post/PostContent.tsx
new file mode 100644
index 00000000..8d70d319
--- /dev/null
+++ b/components/post/PostContent.tsx
@@ -0,0 +1,48 @@
+import { useState } from "react";
+
+import Hive from "@/types/Hive";
+import PostContentCard from "./PostContentCard";
+import PostPropertiesTable from "./PostPropertiesTable";
+import VoteDetailsTable from "./VoteDetailsTable";
+
+interface PostContentProps {
+  active_votes: Hive.PostPageVoteDetails[];
+  data: Hive.Content;
+}
+
+const PostContent: React.FC<PostContentProps> = ({ active_votes, data }) => {
+  const [isPropertiesOpen, setIsPropertiesOpen] = useState(false);
+  const [isVoteDetailsOpen, setIsVoteDetailsOpen] = useState(false);
+
+  const handlePropertiesToggle = () => setIsPropertiesOpen(!isPropertiesOpen);
+  const handleVoteDetailsToggle = () =>
+    setIsVoteDetailsOpen(!isVoteDetailsOpen);
+
+  const voters = active_votes.map((vote) => vote.voter) ?? [];
+
+  return (
+    <>
+      <PostContentCard
+        isPropertiesOpen={isPropertiesOpen}
+        isVoteDetailsOpen={isVoteDetailsOpen}
+        handlePropertiesToggle={handlePropertiesToggle}
+        handleVoteDetailsToggle={handleVoteDetailsToggle}
+        voteDetailsLength={active_votes.length ?? 0}
+        voters={voters}
+        data={data}
+      />
+      <PostPropertiesTable
+        isPropertiesOpen={isPropertiesOpen}
+        data={data}
+      />
+      {active_votes.length && (
+        <VoteDetailsTable
+          isVoteDetailsOpen={isVoteDetailsOpen}
+          voteDetails={active_votes}
+        />
+      )}
+    </>
+  );
+};
+
+export default PostContent;
-- 
GitLab