diff --git a/apps/client/src/hooks/application/appFlowReducer.ts b/apps/client/src/hooks/application/appFlowReducer.ts index 9d2f46b..d5feb84 100644 --- a/apps/client/src/hooks/application/appFlowReducer.ts +++ b/apps/client/src/hooks/application/appFlowReducer.ts @@ -42,6 +42,13 @@ }; } + if (action.type === "updateRoom") { + return { + ...state, + room: action.room, + }; + } + if (action.type === "setPlaying") { return { ...state, diff --git a/apps/client/src/hooks/types/appFlowState.ts b/apps/client/src/hooks/types/appFlowState.ts index 1901239..32314dd 100644 --- a/apps/client/src/hooks/types/appFlowState.ts +++ b/apps/client/src/hooks/types/appFlowState.ts @@ -20,6 +20,7 @@ | { type: "setMyId"; myId: string | null } | { type: "setPlayerName"; playerName: string } | { type: "setRoomAndLobby"; room: domain.room.Room } + | { type: "updateRoom"; room: domain.room.Room } | { type: "setPlaying" } | { type: "setResult"; result: GameResultPayload } | { type: "resetToTitle"; clearMyId: boolean }; diff --git a/apps/client/src/hooks/useAppFlow.ts b/apps/client/src/hooks/useAppFlow.ts index 2864606..c6ffc5d 100644 --- a/apps/client/src/hooks/useAppFlow.ts +++ b/apps/client/src/hooks/useAppFlow.ts @@ -194,6 +194,7 @@ useSocketSubscriptions({ completeJoinRequest, dispatchAppFlow, + scenePhase: appFlow.scenePhase, }); return { diff --git a/apps/client/src/hooks/useSocketSubscriptions.ts b/apps/client/src/hooks/useSocketSubscriptions.ts index b5d592d..92177f7 100644 --- a/apps/client/src/hooks/useSocketSubscriptions.ts +++ b/apps/client/src/hooks/useSocketSubscriptions.ts @@ -12,6 +12,7 @@ type UseSocketSubscriptionsParams = { completeJoinRequest: () => void; dispatchAppFlow: (action: AppFlowAction) => void; + scenePhase: domain.app.ScenePhaseType; }; type AppSocketHandlers = { @@ -65,6 +66,7 @@ export const useSocketSubscriptions = ({ completeJoinRequest, dispatchAppFlow, + scenePhase, }: UseSocketSubscriptionsParams): void => { useEffect(() => { const handlers: AppSocketHandlers = { @@ -74,7 +76,14 @@ handleRoomUpdate: (updatedRoom: domain.room.Room) => { completeJoinRequest(); - dispatchAppFlow({ type: "setRoomAndLobby", room: updatedRoom }); + if ( + scenePhase === domain.app.ScenePhase.PLAYING || + scenePhase === domain.app.ScenePhase.RESULT + ) { + dispatchAppFlow({ type: "updateRoom", room: updatedRoom }); + } else { + dispatchAppFlow({ type: "setRoomAndLobby", room: updatedRoom }); + } }, handleGameStart: () => { @@ -96,5 +105,5 @@ unregisterRoomSubscriptions(handlers); unregisterGameSubscriptions(handlers); }; - }, [completeJoinRequest, dispatchAppFlow]); + }, [completeJoinRequest, dispatchAppFlow, scenePhase]); };