diff --git a/src/common/apis/blog.tsx b/src/common/apis/blog.tsx
index e5057cb..c10a69f 100644
--- a/src/common/apis/blog.tsx
+++ b/src/common/apis/blog.tsx
@@ -5,5 +5,8 @@ import {postListMemberRequestToParameter} from "../util/url.tsx";
export const getMemberPosts = (postListMemberRequest: PostListMemberRequest) =>
axiosApi.get(`/post/member${postListMemberRequestToParameter(postListMemberRequest)}`);
+export const getMemberFolders = (username: string) =>
+ axiosApi.get(`/folders/${username}`);
+
export const saveAndUpdateFolder = (folderRequestList: FolderRequest[]) =>
axiosApi.put("/folders", folderRequestList);
\ No newline at end of file
diff --git a/src/common/types/blog.tsx b/src/common/types/blog.tsx
index 87de640..3ac1a2e 100644
--- a/src/common/types/blog.tsx
+++ b/src/common/types/blog.tsx
@@ -9,6 +9,7 @@ export interface FolderRequest {
export interface FolderType {
id: string,
title: string,
+ postCount: number,
subFolders: FolderType[],
}
@@ -18,6 +19,7 @@ export interface FolderResponse {
depth: number,
orderIndex: number,
parentFolderId: string | null,
+ postCount: number,
}
export const toFolderTypeList = (folderResponseList: FolderResponse[]) => {
@@ -44,6 +46,7 @@ const toFolderType = (folderResponse: FolderResponse) => {
return {
id: folderResponse.folderId,
title: folderResponse.title,
+ postCount: folderResponse.postCount,
subFolders: [],
};
}
diff --git a/src/components/blog/BlogSideBar.tsx b/src/components/blog/BlogSideBar.tsx
index d7b67cd..8286839 100644
--- a/src/components/blog/BlogSideBar.tsx
+++ b/src/components/blog/BlogSideBar.tsx
@@ -63,18 +63,31 @@ function BlogFolderList({depth = 0, folders, setSelectedFolder}: {
setSelectedFolder: (folder: FolderType) => void,
}) {
+ const getPostCount = (folder: FolderType) => {
+ let resultCount = folder.postCount;
+
+ if (folder.subFolders) {
+ folder.subFolders.forEach(subFolder => {
+ resultCount += getPostCount(subFolder);
+ })
+ }
+
+ return resultCount;
+ }
+
return (
{folders.map(folder =>
{depth === 0 &&
}
{depth === 0 &&
}
- 프로필 설정
+ 설정
diff --git a/src/components/common/PaginationButton.tsx b/src/components/common/PaginationButton.tsx
index 992ae3a..eec7241 100644
--- a/src/components/common/PaginationButton.tsx
+++ b/src/components/common/PaginationButton.tsx
@@ -68,36 +68,6 @@ function PaginationButton({pageInfo, setPage}: {
- //
- //
- // {pageList.map((page) => (
- //
- // ))}
- //
- //
);
diff --git a/src/components/folder/FolderCardList.tsx b/src/components/folder/FolderCardList.tsx
index 74dabab..a801cf3 100644
--- a/src/components/folder/FolderCardList.tsx
+++ b/src/components/folder/FolderCardList.tsx
@@ -117,10 +117,11 @@ function FolderCard({
:
-
+
-
{folder.title}
+
{folder.title}
+
({folder.postCount})
{depth !== 2 &&
diff --git a/src/components/folder/FolderSelectBox.tsx b/src/components/folder/FolderSelectBox.tsx
index fb7cb8a..451dc1f 100644
--- a/src/components/folder/FolderSelectBox.tsx
+++ b/src/components/folder/FolderSelectBox.tsx
@@ -74,9 +74,10 @@ function FolderSelectCard({folder, depth, selectedFolder, setTargetFolder, setFo
{getFolderTitle(folder.title, depth)}
+
({folder.postCount})
- {folder.subFolders.length > 0 &&
+ {folder.subFolders &&
folder.subFolders.map((subFolder =>
- {dateToKorean(comment.createdAt)}
+ {fullDateToKorean(comment.createdAt)}
diff --git a/src/pages/blog/BlogPage.tsx b/src/pages/blog/BlogPage.tsx
index ecb6345..776c9ef 100644
--- a/src/pages/blog/BlogPage.tsx
+++ b/src/pages/blog/BlogPage.tsx
@@ -1,15 +1,14 @@
import BasicLayout from "../../layout/BasicLayout.tsx";
import {useNavigate, useParams} from "react-router-dom";
-import {faker} from "@faker-js/faker/locale/ko";
import PostCard from "../../components/post/PostCard.tsx";
import {useEffect, useRef, useState} from "react";
import {MdMenu, MdOutlineExitToApp} from "react-icons/md";
import PaginationButton from "../../components/common/PaginationButton.tsx";
-import {FolderType} from "../../common/types/blog.tsx";
+import {FolderType, toFolderTypeList} from "../../common/types/blog.tsx";
import BlogSideBar from "../../components/blog/BlogSideBar.tsx";
import IconButton from "../../components/common/IconButton.tsx";
import {PageResponse} from "../../common/types/common.tsx";
-import {getMemberPosts} from "../../common/apis/blog.tsx";
+import {getMemberFolders, getMemberPosts} from "../../common/apis/blog.tsx";
import {PostResponse} from "../../common/types/post.tsx";
import {MemberProfileResponse} from "../../common/types/member.tsx";
import {getProfileByUsername} from "../../common/apis/member.tsx";
@@ -28,72 +27,6 @@ function BlogPage() {
});
const [posts, setPosts] = useState
([]);
const [member, setMember] = useState({username: username || "", profileUrl: null});
- const folderData: FolderType[] = [
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [],
- },
- ],
- },
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [],
- },
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [],
- },
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [],
- },
- ]
- },
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [],
- },
- ],
- },
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [],
- },
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [],
- },
- {
- id: crypto.randomUUID(),
- title: faker.lorem.words(),
- subFolders: [],
- },
- ]
- },
- ];
const [folders, setFolders] = useState([]);
const [isOpen, setIsOpen] = useState(false);
@@ -135,12 +68,6 @@ function BlogPage() {
return folderIds;
}
- useEffect(() => {
- // todo: 내 게시글 불러오기 api
- console.log(page, setPageInfo.toString());
- setFolders(folderData);
- }, []);
-
useEffect(() => {
document.addEventListener('mousedown', handleClickOutside);
document.title = username || "DIGLOG";
@@ -179,6 +106,11 @@ function BlogPage() {
setMember(res.data);
})
.catch(error => alert(error.response.data.message));
+
+ getMemberFolders(username)
+ .then(res => {
+ setFolders(toFolderTypeList(res.data));
+ });
}, [username]);
useEffect(() => {
@@ -193,7 +125,6 @@ function BlogPage() {
size: pageInfo.size,
})
.then((res) => {
- console.log(res.data.page);
setPosts(res.data.content);
setPageInfo(res.data.page);
})
@@ -236,7 +167,7 @@ function BlogPage() {