fix: Redirigir al lobby cuando la partida deja de existir tras recargar
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
Some checks failed
CI/CD - Francia Ocupada (La Resistencia) / build-and-deploy (push) Failing after 6s
- Añadido listener de errores de socket para detectar fallos de reconexión - Actualizada la lógica de transiciones de vista para evitar bloqueos en pantallas vacías - Limpieza de sesión al fallar la reconexión
This commit is contained in:
@@ -65,10 +65,30 @@ export default function Home() {
|
|||||||
updateSession({ currentView: 'game', roomId: gameState.roomId });
|
updateSession({ currentView: 'game', roomId: gameState.roomId });
|
||||||
} else if (view === 'game' && !gameState) {
|
} else if (view === 'game' && !gameState) {
|
||||||
// Si estábamos en juego y volvemos a null, volver al lobby
|
// Si estábamos en juego y volvemos a null, volver al lobby
|
||||||
|
// Pero solo si no estamos esperando una reconexión inicial
|
||||||
|
if (hasReconnected) {
|
||||||
setView('lobby');
|
setView('lobby');
|
||||||
updateSession({ currentView: 'lobby', roomId: undefined });
|
updateSession({ currentView: 'lobby', roomId: undefined });
|
||||||
}
|
}
|
||||||
}, [gameState]);
|
}
|
||||||
|
}, [gameState, view, hasReconnected]);
|
||||||
|
|
||||||
|
// Listener para errores de socket que deben expulsar al lobby
|
||||||
|
useEffect(() => {
|
||||||
|
if (!socket) return;
|
||||||
|
|
||||||
|
const handleError = (msg: string) => {
|
||||||
|
if (msg === 'La partida ya no existe' || msg === 'No se pudo reconectar a la partida') {
|
||||||
|
setView('lobby');
|
||||||
|
updateSession({ currentView: 'lobby', roomId: undefined });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
socket.on('error', handleError);
|
||||||
|
return () => {
|
||||||
|
socket.off('error', handleError);
|
||||||
|
};
|
||||||
|
}, [socket, updateSession]);
|
||||||
|
|
||||||
const handleLogin = (e: React.FormEvent) => {
|
const handleLogin = (e: React.FormEvent) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
Reference in New Issue
Block a user