Skip to content

Commit 8206ed5

Browse files
committed
fix: 후기 작성 후 실시간 업데이트(쿼리 키 추가)
1 parent 7109c07 commit 8206ed5

File tree

2 files changed

+32
-12
lines changed

2 files changed

+32
-12
lines changed

src/app/(with-header)/mypage/reservations/page.tsx

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
useMyReservations,
66
useCancelReservation,
77
useCreateReview,
8+
invalidateActivityQueries,
89
} from '@/hooks/useReservationQueries';
910
import { FilterOption } from '@/constants/reservationConstants';
1011
import useInfiniteScroll from '@/hooks/useInfiniteScroll';
@@ -102,23 +103,21 @@ export default function MyReservationsPage() {
102103
// 후기 작성 확인
103104
const handleReviewConfirm = (rating: number, content: string) => {
104105
if (reviewModal.reservationId) {
106+
const reservation = allReservations.find(
107+
(r) => r.id === reviewModal.reservationId,
108+
);
109+
105110
createReviewMutation.mutate(
106111
{
107112
reservationId: reviewModal.reservationId,
108113
data: { rating, content },
109114
},
110115
{
111116
onSuccess: () => {
112-
setReviewModal({
113-
isOpen: false,
114-
reservationId: null,
115-
activityTitle: null,
116-
activityImage: null,
117-
activityDate: null,
118-
activityTime: null,
119-
headCount: null,
120-
totalPrice: null,
121-
});
117+
// 성공 후 추가 쿼리 무효화
118+
if (reservation?.activity.id) {
119+
invalidateActivityQueries(reservation.activity.id);
120+
}
122121
},
123122
},
124123
);

src/hooks/useReservationQueries.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,36 @@ export const useCreateReview = () => {
7373
reservationId: number;
7474
data: CreateReviewRequest;
7575
}) => createReview(reservationId, data),
76-
onSuccess: () => {
77-
// 예약 리스트 캐시 무효화하여 reviewSubmitted 상태 업데이트
76+
onSuccess: (data, variables) => {
77+
// 기존 쿼리 무효화
7878
queryClient.invalidateQueries({
7979
queryKey: RESERVATION_QUERY_KEYS.RESERVATIONS,
8080
});
81+
8182
toast.success('후기가 작성되었습니다.');
8283
},
8384
onError: (error) => {
8485
toast.error(`후기 작성 실패: ${error.message}`);
8586
},
8687
});
8788
};
89+
90+
// 쿼리 무효화 함수
91+
export const invalidateActivityQueries = (activityId: number) => {
92+
const queryClient = useQueryClient();
93+
94+
queryClient.invalidateQueries({
95+
queryKey: ['popularExperiences'],
96+
});
97+
queryClient.invalidateQueries({
98+
queryKey: ['experiences'],
99+
exact: false,
100+
});
101+
queryClient.invalidateQueries({
102+
queryKey: ['activity', activityId.toString()],
103+
});
104+
queryClient.invalidateQueries({
105+
queryKey: ['reviews'],
106+
exact: false,
107+
});
108+
};

0 commit comments

Comments
 (0)