@@ -10,6 +10,7 @@ import { useChatRoom } from "@/hooks/useChatRoom";
1010import { useChatRooms } from "@/hooks/useChatRooms" ;
1111import { useChatSocket } from "@/hooks/useChatSocket" ;
1212import { useMessages } from "@/hooks/useMessages" ;
13+ import { useRequireAuth } from "@/hooks/useRequireAuth" ;
1314import { useSession } from "@/services/session" ;
1415
1516interface ChatRoomPageProps {
@@ -27,10 +28,12 @@ export default function ChatRoomPage({ params }: ChatRoomPageProps) {
2728 const id = Number ( roomId ) ;
2829
2930 const { myUserId } = useSession ( ) ;
31+ const { isAuthReady, isAuthenticated } = useRequireAuth ( ) ;
32+ const canFetchRoom = isAuthReady && isAuthenticated && Number . isFinite ( id ) ;
3033
3134 // 방 정보: 딥링크/새로고침 대비 상세 조회(useChatRoom) 우선, 없으면 방 목록 캐시 폴백.
32- const { data : roomDetail , isError : isRoomError , error : roomError } = useChatRoom ( id ) ;
33- const { data : roomsData } = useChatRooms ( ) ;
35+ const { data : roomDetail , isError : isRoomError , error : roomError } = useChatRoom ( id , canFetchRoom ) ;
36+ const { data : roomsData } = useChatRooms ( undefined , canFetchRoom ) ;
3437 const roomListItem = useMemo (
3538 ( ) => roomsData ?. pages . flatMap ( page => page . items ) . find ( r => r . id === id ) ,
3639 [ roomsData , id ]
@@ -56,9 +59,9 @@ export default function ChatRoomPage({ params }: ChatRoomPageProps) {
5659 isError : isMessagesError ,
5760 error : messagesError ,
5861 refetch : refetchMessages ,
59- } = useMessages ( id ) ;
62+ } = useMessages ( id , undefined , canFetchRoom ) ;
6063
61- const canConnectSocket = Boolean ( roomDetail || roomListItem ) ;
64+ const canConnectSocket = canFetchRoom && Boolean ( roomDetail || roomListItem ) ;
6265 const { sendMessage, markAsRead, lastError, isConnected } = useChatSocket ( id , canConnectSocket ) ;
6366
6467 const messages = useMemo (
@@ -106,7 +109,7 @@ export default function ChatRoomPage({ params }: ChatRoomPageProps) {
106109 </ div >
107110 ) }
108111
109- { isLoading ? (
112+ { ! canFetchRoom || isLoading ? (
110113 < div className = "flex flex-1 items-center justify-center" >
111114 < div className = "text-body-1 text-text-secondary" > 메시지를 불러오는 중...</ div >
112115 </ div >
0 commit comments