diff --git a/src/pages/mypage/TradeDetailPage.tsx b/src/pages/mypage/TradeDetailPage.tsx index b0037e0..ba83116 100644 --- a/src/pages/mypage/TradeDetailPage.tsx +++ b/src/pages/mypage/TradeDetailPage.tsx @@ -8,6 +8,7 @@ import { useTradeStatusChange } from '@/features/trade/api/useTradeStatusChange' import type { TradeStatus } from '@/features/trade/api/types'; import { buildTradeTimeline } from '@/features/trade/lib/buildTradeTimeline'; import { resolveImageUrl } from '@/shared/lib/resolveImageUrl'; +import { createOrGetChatRoom } from '@/features/chat/api/room'; const SectionTitle = ({ children }: { children: ReactNode }) => (
{children}
@@ -68,6 +69,7 @@ const TradeDetailPage = () => { Boolean((location.state as { shippingConfirmed?: boolean } | null)?.shippingConfirmed), ); const shippingToastHandledRef = useRef(false); + const [isChatLoading, setIsChatLoading] = useState(false); useEffect(() => { if (!showShippingToast || shippingToastHandledRef.current) return; @@ -146,6 +148,17 @@ const TradeDetailPage = () => { ); }; + const handleChat = async () => { + if (isChatLoading) return; + setIsChatLoading(true); + try { + const { chatRoomId } = await createOrGetChatRoom(trade.itemId); + navigate(`/chat/${chatRoomId}`); + } finally { + setIsChatLoading(false); + } + }; + return (