From cf8eac496520a259716f676d26fb543f9a7ca102 Mon Sep 17 00:00:00 2001 From: Yoonchulchung Date: Thu, 12 Feb 2026 21:38:21 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B1=B0=EC=A0=88=ED=95=98=EA=B8=B0=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20=EB=82=98?= =?UTF-8?q?=EC=98=A4=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../proposal/received-proposal-content.tsx | 85 ++++--- .../components/Bubbles/ProposalMessage.tsx | 220 ++++++++++++++---- .../components/Bubbles/SystemEventMessage.tsx | 2 +- .../room/components/CollaborationBar.tsx | 49 ++-- app/routes/room/components/MessageRender.tsx | 1 + app/routes/room/page.tsx | 12 +- 6 files changed, 252 insertions(+), 117 deletions(-) diff --git a/app/routes/business/proposal/received-proposal-content.tsx b/app/routes/business/proposal/received-proposal-content.tsx index b637df6c..ed70949f 100644 --- a/app/routes/business/proposal/received-proposal-content.tsx +++ b/app/routes/business/proposal/received-proposal-content.tsx @@ -1,12 +1,14 @@ import { useState, useEffect } from "react"; -import { useSearchParams } from "react-router-dom"; +import { useSearchParams, useLocation } from "react-router-dom"; import { useNavigate } from "react-router-dom"; import { useHideHeader } from "../../../hooks/useHideHeader"; +import { useHideBottomTab } from "../../../hooks/useHideBottomTab"; import NavigationHeader from "../../../components/common/NavigateHeader"; import CampaignBrandCard from "../components/CampaignBrandCard"; import CampaignInfoGroup from "../components/CampaignInfoGroup"; import Modal from "../../../components/common/Modal"; +import FilterBottomSheet from "../../../components/common/FilterBottomSheet"; import LoadingSpinner from "../../../components/common/LoadingSpinner"; import { getProposalDetail, approveCampaignProposal, rejectCampaignProposal, type ProposalDetail } from "./api/proposal"; @@ -33,7 +35,16 @@ export default function ReceivedProposalContent() { const [rejectReason, setRejectReason] = useState(""); const navigate = useNavigate(); + const location = useLocation(); useHideHeader(true); + useHideBottomTab(modalType === "reject" || modalType === "rejectSuccess"); + + // 채팅에서 거절하기로 진입한 경우 자동으로 거절 모달 열기 + useEffect(() => { + if (location.state?.openReject && !isLoading && proposal) { + setModalType("reject"); + } + }, [location.state, isLoading, proposal]); useEffect(() => { const fetchData = async () => { @@ -226,45 +237,20 @@ export default function ReceivedProposalContent() { - - {/* 모달 */} - {modalType === "confirm" && ( -
- -
- check -
-

제안을 수락하시겠습니까?

-
- - -
-
- )} - - {modalType === "success" && ( -
-
check
-

수락하기 완료

-

브랜드와 채팅방에서
협업을 진행해주세요

- -
- )} - + {/* 거절 바텀시트 */} + {modalType === "reject" && ( -
-

비플레인 선크림 리뷰 콘텐츠

+
+

{proposal?.title}

-
+