Skip to content

Commit 92b276c

Browse files
committed
Feat: 북마크되었는지 확인 후 삭제 및 추가 #65
1 parent e9e8fb9 commit 92b276c

File tree

5 files changed

+26
-15
lines changed

5 files changed

+26
-15
lines changed

components/ui/BoardCard/BoardCardPackage/BoardCardDropdown.tsx

+14-13
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,34 @@ import useDeleteBookmark from '@/hooks/mutations/useDeleteBookmark';
55
import useDeleteBoard from '@/hooks/mutations/useDeleteBoard';
66
import { Dropdown } from '../../ui';
77

8-
export default function PostCardDropdown({
9-
boardId, // TODO : 북마크 되어있는지 확인
10-
isMyBoard, // isBookmarked,
8+
export default function BoardCardDropdown({
9+
boardId,
10+
isMyBoard,
11+
isBookmarked,
1112
}: {
1213
boardId: number;
1314
isMyBoard: boolean;
14-
// isBookmarked: boolean;
15+
isBookmarked: boolean;
1516
}) {
1617
const { mutate: addBookmark } = useAddBookmark();
1718
const { mutate: deleteBookmark } = useDeleteBookmark();
1819
const { mutate: deleteBoard } = useDeleteBoard(boardId);
1920

20-
const handleBookmark = () => {
21-
// if (isBookmarked) {
22-
deleteBookmark(boardId);
23-
// } else {
24-
// addBookmark(boardId);
25-
// }
26-
};
27-
2821
return (
2922
<Dropdown>
3023
<Dropdown.Trigger>
3124
<DotsIcon className="w-6 h-6 tablet:w-7 tablet:h-7" />
3225
</Dropdown.Trigger>
3326
<Dropdown.Menu>
34-
<Dropdown.Item event={handleBookmark}>북마크 추가</Dropdown.Item>
27+
{isBookmarked ? (
28+
<Dropdown.Item event={() => deleteBookmark(boardId)}>
29+
북마크 삭제
30+
</Dropdown.Item>
31+
) : (
32+
<Dropdown.Item event={() => addBookmark(boardId)}>
33+
북마크 추가
34+
</Dropdown.Item>
35+
)}
3536
<Dropdown.Item event={() => copyToClipBoard(window.location.href)}>
3637
공유하기
3738
</Dropdown.Item>

components/ui/BoardCard/BoardCardPackage/Header.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export default function BoardCardHeader({ board }: { board: Board }) {
2727
<BoardCardDropdown
2828
boardId={board.id}
2929
isMyBoard={board.userId === user?.userId}
30+
isBookmarked={board.bookmarked}
3031
/>
3132
</FlexBox>
3233
);

hooks/mutations/useAddBookmark.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
import { queryKeys } from '@/constant/query-keys';
12
import { addBookmarkBoard } from '@/service/board';
23
import Toast from '@/utils/notification';
3-
import { useMutation } from '@tanstack/react-query';
4+
import { useMutation, useQueryClient } from '@tanstack/react-query';
45

56
export default function useAddBookmark() {
7+
const queryClient = useQueryClient();
8+
69
const { mutate, isLoading } = useMutation({
710
mutationFn: addBookmarkBoard,
811
onSuccess: () => {
912
Toast.success('북마크가 성공적으로 저장 되었습니다.');
13+
queryClient.invalidateQueries([queryKeys.BOARD_LIST]);
1014
},
1115
onError: () => {
1216
Toast.error('북마크를 저장하지 못했습니다. 잠시후 다시 시도해주세요.🥲');

hooks/mutations/useDeleteBookmark.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
import { queryKeys } from '@/constant/query-keys';
12
import { deleteBookmarkBoard } from '@/service/board';
23
import Toast from '@/utils/notification';
3-
import { useMutation } from '@tanstack/react-query';
4+
import { useMutation, useQueryClient } from '@tanstack/react-query';
45

56
export default function useDeleteBookmark() {
7+
const queryClient = useQueryClient();
8+
69
const { mutate, isLoading } = useMutation({
710
mutationFn: deleteBookmarkBoard,
811
onSuccess: () => {
912
Toast.success('북마크가 성공적으로 삭제 되었습니다.');
13+
queryClient.invalidateQueries([queryKeys.BOARD_LIST]);
1014
},
1115
onError: () => {
1216
Toast.error('북마크를 삭제하지 못했습니다. 잠시후 다시 시도해주세요.🥲');

types/types.ts

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export interface Board {
2323
replyCount: number;
2424
userImageUrl: string;
2525
boardLiked: boolean;
26+
bookmarked: boolean;
2627
createdDate: string;
2728
modifiedDate: string;
2829
}

0 commit comments

Comments
 (0)