11import { useEffect , useState } from 'react' ;
22import { useNavigate } from 'react-router-dom' ;
3- import { useRecoilState , useResetRecoilState } from 'recoil' ;
3+ import { useResetRecoilState , useSetRecoilState } from 'recoil' ;
44import { createRoom } from '../../api/CreateRoom' ;
55import MessageModal from '../../components/modal/MessageModal.tsx' ;
66import useMessages from '../../hooks/useMessage' ;
77import { userState } from '../../recoil/atoms/userState' ;
8+ import WebSocketManager from '../../services/WebSocketManager.ts' ;
9+ import { gameState } from '../../recoil/atoms/gameState.ts' ;
810
911const GameSetting = ( ) => {
10- const resetUserState = useResetRecoilState ( userState ) ;
1112 const navigate = useNavigate ( ) ;
1213 const [ inputNickname , setInputNickname ] = useState < string > ( '' ) ;
1314 const [ gameTime , setGameTime ] = useState < number > ( 10 ) ;
@@ -19,21 +20,20 @@ const GameSetting = () => {
1920
2021 const { messages, showMessage } = useMessages ( ) ;
2122
22- const [ user , setUser ] = useRecoilState ( userState ) ;
23+ const setUser = useSetRecoilState ( userState ) ;
24+ const resetUserState = useResetRecoilState ( userState ) ;
25+ const resetGameState = useResetRecoilState ( gameState ) ;
2326
2427 useEffect ( ( ) => {
2528 resetUserState ( ) ;
29+ resetGameState ( ) ;
30+ const webSocketManager = WebSocketManager . getInstance ( ) ;
31+ if ( webSocketManager . isConnected ( ) ) {
32+ webSocketManager . disconnect ( ) ;
33+ }
2634 // console.log('Recoil userState 초기화 완료');
2735 } , [ ] ) ;
2836
29- useEffect ( ( ) => {
30- const roomId = user . roomId ;
31- if ( roomId !== null ) {
32- // GameReady 페이지로 이동
33- navigate ( `/game-ready/${ roomId } ` ) ;
34- }
35- } , [ user . nickname ] ) ;
36-
3737 useEffect ( ( ) => {
3838 // 게임 유형이 변경될 때, maxUserCount 초기화
3939 if ( gameType === 'TEAM_VS_TEAM' ) {
@@ -69,6 +69,10 @@ const GameSetting = () => {
6969
7070 // Recoil(userState) 상태에 roomId 업데이트
7171 setUser ( ( prev ) => ( { ...prev , nickname : inputNickname , roomId : createdRoomId } ) ) ;
72+
73+ if ( createdRoomId !== null ) {
74+ navigate ( `/game-ready/${ createdRoomId } ` ) ;
75+ }
7276 } catch {
7377 // console.error('Error creating room:', error.message);
7478 showMessage ( '방 생성에 실패했습니다.' ) ;
0 commit comments