From d64b2a52a40c0789ed1bac9e546935fccf696e05 Mon Sep 17 00:00:00 2001 From: Suhyeon Jeon Date: Tue, 4 Mar 2025 00:27:14 +0900 Subject: [PATCH] fix: review --- .../reviews/_components/CompletedReview.tsx | 12 +++--- .../reviews/_components/NoWritableReview.tsx | 2 +- src/app/reviews/_components/Review.tsx | 42 ++++++++++++------- .../reviews/_components/ReviewEditorModal.tsx | 12 +++++- src/app/reviews/_components/ReviewTab.tsx | 8 ++-- .../reviews/_components/WritableReview.tsx | 35 +++++++++------- src/constants/navigationProps.tsx | 3 -- 7 files changed, 67 insertions(+), 47 deletions(-) diff --git a/src/app/reviews/_components/CompletedReview.tsx b/src/app/reviews/_components/CompletedReview.tsx index 57b2f6d2..1dad7ceb 100644 --- a/src/app/reviews/_components/CompletedReview.tsx +++ b/src/app/reviews/_components/CompletedReview.tsx @@ -96,23 +96,23 @@ const CompletedReview = ({ review, offSeparator }: CompletedReviewProps) => {
{menuImageErrors[review.reviewId] || !review.menuImage ? ( -
+
{review.storeName.slice(0, 3)}
) : ( pending-review { setMenuImageErrors((prev) => ({ ...prev, [review.reviewId]: true })) }} /> )}
-
{review.menuName}
+
{review.menuName}
@@ -154,7 +154,7 @@ const CompletedReview = ({ review, offSeparator }: CompletedReviewProps) => { )}
{/* 리뷰 내용 */} -
{review.clientReviewContent}
+
{review.clientReviewContent}
{/* 리뷰 수정 기간 */} {isEditable && ( <> diff --git a/src/app/reviews/_components/NoWritableReview.tsx b/src/app/reviews/_components/NoWritableReview.tsx index 1b1ca7c5..ef4ded3b 100644 --- a/src/app/reviews/_components/NoWritableReview.tsx +++ b/src/app/reviews/_components/NoWritableReview.tsx @@ -1,7 +1,7 @@ import Icon from '@/components/Icon' const NoWritableReview = () => ( -
+
주문 후 리뷰를 작성해주세요!
diff --git a/src/app/reviews/_components/Review.tsx b/src/app/reviews/_components/Review.tsx index 52b930f6..f3baec08 100644 --- a/src/app/reviews/_components/Review.tsx +++ b/src/app/reviews/_components/Review.tsx @@ -10,14 +10,24 @@ import WritableReview from '@/app/reviews/_components/WritableReview' import WritableReviewSkeleton from '@/app/reviews/_components/WritableReviewSkeleton' import { useInfiniteScroll } from '@/hooks/useInfiniteScroll' import { motion } from 'motion/react' -import { useState } from 'react' +import { useRouter, useSearchParams } from 'next/navigation' +import { useRef, useState } from 'react' export type ReviewTabType = '작성가능' | '작성완료' const Review = () => { - const [tab, setTab] = useState('작성가능') + const searchParams = useSearchParams() + const [tab, setTab] = useState( + searchParams.get('tab') + ? searchParams.get('tab') === '1' + ? '작성가능' + : '작성완료' + : '작성가능' + ) + const router = useRouter() const { data: writableReviews, isLoading } = useGetWritableReviews() + const scrollRef = useRef(null) const { data: completedReviews, @@ -32,10 +42,11 @@ const Review = () => { const handleChangeTab = (tab: ReviewTabType) => { setTab(tab) + router.push(`/reviews?tab=${tab === '작성가능' ? '1' : '2'}`) } return ( -
+
{ completedReviewsCount={completedReviewsCount ?? 0} />
-
+
{isLoading ? ( Array.from({ length: 5 }).map((_, i) => ( )) - ) : writableReviews ? ( + ) : writableReviews && writableReviews.length > 0 ? ( writableReviews.map((review, index) => ( { {completedReviews?.map((review, index) => ( { if (content.length < 5) { setIsContentValid(false) @@ -110,7 +116,10 @@ const ReviewEditorModal = ({ }, { onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['completed-reviews'] }) hideModal() + router.push(`${ROUTE_PATHS.REVIEW}?tab=2`) + toast({ title: '리뷰가 등록되었어요.', position: 'center', @@ -141,6 +150,7 @@ const ReviewEditorModal = ({ }, { onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['completed-reviews'] }) hideModal() toast({ title: '리뷰가 수정되었어요.', diff --git a/src/app/reviews/_components/ReviewTab.tsx b/src/app/reviews/_components/ReviewTab.tsx index 81b58e81..e23ea6f6 100644 --- a/src/app/reviews/_components/ReviewTab.tsx +++ b/src/app/reviews/_components/ReviewTab.tsx @@ -19,23 +19,23 @@ const ReviewTab = ({ } return ( -
+
>({}) const handleClickReviewButton = () => { + console.log(review) showModal({ content: (
{imageErrors[review.orderId] || !review.storeImageThumbnail ? ( -
+
{review.storeName.slice(0, 3)}
) : ( pending-review { setImageErrors((prev) => ({ ...prev, [review.orderId]: true })) }} /> )} -
-
-
{review.storeName}
-
    {review.orderSummary}
+
+
+
{review.storeName}
+
    {review.orderSummary}
+
+
+
-
{!offSeparator && } diff --git a/src/constants/navigationProps.tsx b/src/constants/navigationProps.tsx index 8dc20cd4..fdee0e70 100644 --- a/src/constants/navigationProps.tsx +++ b/src/constants/navigationProps.tsx @@ -39,9 +39,6 @@ const NAVIGATION_PROPS: Record = { [ROUTE_PATHS.ORDERS]: { title: '주문내역', }, - [ROUTE_PATHS.ORDERS_DETAIL]: { - title: '주문상세', - }, [ROUTE_PATHS.FAVORITES]: { title: '찜', },