Skip to content

Commit

Permalink
fix: 다른 사용자 프로필 페이지에서 좋아요 토글 시, count가 변경되도록 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
presentKey committed Mar 12, 2024
1 parent d2f5bca commit 5843696
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 5 deletions.
9 changes: 8 additions & 1 deletion src/features/reviews/components/ReviewCard/ActionBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import ReviewMoreButton from "./ReviewMoreButton";

export interface ActionBarProps {
isMine: boolean;
memberId?: number;
isLike?: boolean;
likeCount: number;
createdAt?: string;
Expand All @@ -29,6 +30,7 @@ const DEBOUNCE_DELAY = 200;

export default function ActionBar({
isMine,
memberId,
isLike,
likeCount,
createdAt,
Expand All @@ -44,7 +46,12 @@ export default function ActionBar({
const [isLoginModalVisible, setIsLoginModalVisible] = useState(false);
const data = useGetIsLike(reviewId);
const userLike = data ? data.isLike : isLike;
const likeMutation = useToggleLike(reviewId, animeId, userLike ?? false);
const likeMutation = useToggleLike(
reviewId,
animeId,
userLike ?? false,
memberId,
);
const { user } = useAuth();

const handleClickLike = useDebounce(() => {
Expand Down
13 changes: 9 additions & 4 deletions src/features/reviews/hook/useToggleLike.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export default function useToggleLike(
reviewId: number,
animeId: number,
isLike: boolean,
memberId?: number, // 다른 사용자 프로필의 memberId
) {
const queryClient = useQueryClient();
const { reviewApi } = useApi();
Expand All @@ -29,7 +30,11 @@ export default function useToggleLike(
onMutate: async () => {
// optimistic update를 overwrite하지 않도록 refetch를 cancel
await queryClient.cancelQueries(["review", animeId, user?.memberId]);
await queryClient.cancelQueries(["profile", user?.memberId, "review"]);
await queryClient.cancelQueries([
"profile",
memberId || user?.memberId,
"review",
]);
await queryClient.cancelQueries(["reviewLike", reviewId, user?.memberId]);
await queryClient.cancelQueries(["MostRecentReviewList"]);

Expand All @@ -44,7 +49,7 @@ export default function useToggleLike(
queryClient,
reviewId,
isLike,
["profile", user?.memberId, "review"], // 회원 리뷰 목록
["profile", memberId || user?.memberId, "review"], // 회원 리뷰 목록
);
const prevRecentReviewList = optimisticUpdateReviews(
queryClient,
Expand Down Expand Up @@ -79,7 +84,7 @@ export default function useToggleLike(
refetchType: "none", // 사용자의 요청 전까지는 refetch가 일어나지 않도록 합니다.
});
queryClient.invalidateQueries({
queryKey: ["profile", user?.memberId, "review"],
queryKey: ["profile", memberId || user?.memberId, "review"],
refetchType: "none",
});
queryClient.invalidateQueries({
Expand Down Expand Up @@ -109,7 +114,7 @@ export default function useToggleLike(
);
rollBack(
queryClient,
["profile", user?.memberId, "review"],
["profile", memberId || user?.memberId, "review"],
context.prevUserReviewList,
);
rollBack(
Expand Down
3 changes: 3 additions & 0 deletions src/features/users/routes/Profile/TabMenu/ReviewList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ import EmptyList from "./EmptyList";

interface ReviewListProps {
isMine: boolean;
memberId: number;
list: ReviewListResponse[];
isLoading: boolean;
}

export default function ReviewList({
isMine,
memberId,
list,
isLoading,
}: ReviewListProps) {
Expand Down Expand Up @@ -54,6 +56,7 @@ export default function ReviewList({
createdAt={review.createdAt}
isTimeAgo={false}
isMine={isMine}
memberId={memberId}
likeCount={review.likeCount}
reviewId={review.reviewId}
animeId={review.animeId}
Expand Down
1 change: 1 addition & 0 deletions src/features/users/routes/Profile/TabMenu/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ export default function TabMenu({ isMine, memberId }: TabMenuProps) {
{selectedMenu === "한줄리뷰" && (
<ReviewList
isMine={isMine}
memberId={memberId}
list={reviews?.pages ?? []}
isLoading={isLoadingReview}
/>
Expand Down

0 comments on commit 5843696

Please sign in to comment.