File tree 5 files changed +26
-15
lines changed
components/ui/BoardCard/BoardCardPackage
5 files changed +26
-15
lines changed Original file line number Diff line number Diff line change @@ -5,33 +5,34 @@ import useDeleteBookmark from '@/hooks/mutations/useDeleteBookmark';
5
5
import useDeleteBoard from '@/hooks/mutations/useDeleteBoard' ;
6
6
import { Dropdown } from '../../ui' ;
7
7
8
- export default function PostCardDropdown ( {
9
- boardId, // TODO : 북마크 되어있는지 확인
10
- isMyBoard, // isBookmarked,
8
+ export default function BoardCardDropdown ( {
9
+ boardId,
10
+ isMyBoard,
11
+ isBookmarked,
11
12
} : {
12
13
boardId : number ;
13
14
isMyBoard : boolean ;
14
- // isBookmarked: boolean;
15
+ isBookmarked : boolean ;
15
16
} ) {
16
17
const { mutate : addBookmark } = useAddBookmark ( ) ;
17
18
const { mutate : deleteBookmark } = useDeleteBookmark ( ) ;
18
19
const { mutate : deleteBoard } = useDeleteBoard ( boardId ) ;
19
20
20
- const handleBookmark = ( ) => {
21
- // if (isBookmarked) {
22
- deleteBookmark ( boardId ) ;
23
- // } else {
24
- // addBookmark(boardId);
25
- // }
26
- } ;
27
-
28
21
return (
29
22
< Dropdown >
30
23
< Dropdown . Trigger >
31
24
< DotsIcon className = "w-6 h-6 tablet:w-7 tablet:h-7" />
32
25
</ Dropdown . Trigger >
33
26
< 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
+ ) }
35
36
< Dropdown . Item event = { ( ) => copyToClipBoard ( window . location . href ) } >
36
37
공유하기
37
38
</ Dropdown . Item >
Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ export default function BoardCardHeader({ board }: { board: Board }) {
27
27
< BoardCardDropdown
28
28
boardId = { board . id }
29
29
isMyBoard = { board . userId === user ?. userId }
30
+ isBookmarked = { board . bookmarked }
30
31
/>
31
32
</ FlexBox >
32
33
) ;
Original file line number Diff line number Diff line change
1
+ import { queryKeys } from '@/constant/query-keys' ;
1
2
import { addBookmarkBoard } from '@/service/board' ;
2
3
import Toast from '@/utils/notification' ;
3
- import { useMutation } from '@tanstack/react-query' ;
4
+ import { useMutation , useQueryClient } from '@tanstack/react-query' ;
4
5
5
6
export default function useAddBookmark ( ) {
7
+ const queryClient = useQueryClient ( ) ;
8
+
6
9
const { mutate, isLoading } = useMutation ( {
7
10
mutationFn : addBookmarkBoard ,
8
11
onSuccess : ( ) => {
9
12
Toast . success ( '북마크가 성공적으로 저장 되었습니다.' ) ;
13
+ queryClient . invalidateQueries ( [ queryKeys . BOARD_LIST ] ) ;
10
14
} ,
11
15
onError : ( ) => {
12
16
Toast . error ( '북마크를 저장하지 못했습니다. 잠시후 다시 시도해주세요.🥲' ) ;
Original file line number Diff line number Diff line change
1
+ import { queryKeys } from '@/constant/query-keys' ;
1
2
import { deleteBookmarkBoard } from '@/service/board' ;
2
3
import Toast from '@/utils/notification' ;
3
- import { useMutation } from '@tanstack/react-query' ;
4
+ import { useMutation , useQueryClient } from '@tanstack/react-query' ;
4
5
5
6
export default function useDeleteBookmark ( ) {
7
+ const queryClient = useQueryClient ( ) ;
8
+
6
9
const { mutate, isLoading } = useMutation ( {
7
10
mutationFn : deleteBookmarkBoard ,
8
11
onSuccess : ( ) => {
9
12
Toast . success ( '북마크가 성공적으로 삭제 되었습니다.' ) ;
13
+ queryClient . invalidateQueries ( [ queryKeys . BOARD_LIST ] ) ;
10
14
} ,
11
15
onError : ( ) => {
12
16
Toast . error ( '북마크를 삭제하지 못했습니다. 잠시후 다시 시도해주세요.🥲' ) ;
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ export interface Board {
23
23
replyCount : number ;
24
24
userImageUrl : string ;
25
25
boardLiked : boolean ;
26
+ bookmarked : boolean ;
26
27
createdDate : string ;
27
28
modifiedDate : string ;
28
29
}
You can’t perform that action at this time.
0 commit comments