|
1 | | -import { useCallback, useMemo, useState } from 'react' |
| 1 | +import { useCallback } from 'react' |
2 | 2 | import { useDeleteLikeLink, usePostLikeLink } from '@/services/link/useLink' |
3 | | -import { debounce } from 'lodash' |
4 | | -import useToggle from '../../Toggle/hooks/useToggle' |
5 | 3 |
|
6 | 4 | export interface UseLikeLinkProps { |
7 | 5 | spaceId?: number |
8 | 6 | linkId: number |
9 | | - isLikedValue?: boolean |
10 | | - likeCountValue: number |
11 | 7 | } |
12 | 8 |
|
13 | | -const useLikeLink = ({ |
14 | | - linkId, |
15 | | - isLikedValue, |
16 | | - likeCountValue, |
17 | | -}: UseLikeLinkProps) => { |
18 | | - const [isLiked, likeToggle] = useToggle(isLikedValue) |
19 | | - const [likeCount, setLikeCount] = useState<number>(likeCountValue) |
| 9 | +const useLikeLink = ({ spaceId, linkId }: UseLikeLinkProps) => { |
| 10 | + const { mutate: deleteLikeLink } = useDeleteLikeLink({ spaceId }) |
| 11 | + const { mutate: postLikeLink } = usePostLikeLink({ spaceId }) |
20 | 12 |
|
21 | | - const { mutate: deleteLikeLink } = useDeleteLikeLink() |
22 | | - const { mutate: postLikeLink } = usePostLikeLink() |
| 13 | + const handleRemoveLike = useCallback(() => { |
| 14 | + deleteLikeLink({ linkId }) |
| 15 | + }, [deleteLikeLink, linkId]) |
23 | 16 |
|
24 | | - const debounceUnLikeLink = useMemo( |
25 | | - () => |
26 | | - debounce(async () => { |
27 | | - await deleteLikeLink({ linkId }) |
28 | | - }, 300), |
29 | | - [deleteLikeLink, linkId], |
30 | | - ) |
31 | | - |
32 | | - const debounceLikeLink = useMemo( |
33 | | - () => |
34 | | - debounce(async () => { |
35 | | - await postLikeLink({ linkId }) |
36 | | - }, 300), |
37 | | - [postLikeLink, linkId], |
38 | | - ) |
| 17 | + const handleAddLike = useCallback(() => { |
| 18 | + postLikeLink({ linkId }) |
| 19 | + }, [postLikeLink, linkId]) |
39 | 20 |
|
40 | 21 | const handleClickLike = useCallback( |
41 | 22 | (isLike: boolean) => { |
42 | | - likeToggle() |
43 | 23 | if (isLike) { |
44 | | - setLikeCount((prev) => prev - 1) |
45 | | - debounceUnLikeLink() |
| 24 | + handleRemoveLike() |
46 | 25 | } else { |
47 | | - setLikeCount((prev) => prev + 1) |
48 | | - debounceLikeLink() |
| 26 | + handleAddLike() |
49 | 27 | } |
50 | 28 | }, |
51 | | - [likeToggle, debounceUnLikeLink, debounceLikeLink], |
| 29 | + [handleRemoveLike, handleAddLike], |
52 | 30 | ) |
53 | 31 |
|
54 | | - return { isLiked, likeCount, handleClickLike } |
| 32 | + return { handleClickLike } |
55 | 33 | } |
56 | 34 |
|
57 | 35 | export default useLikeLink |
0 commit comments