Files
FranciaOcupada/.agent/workflows/sesiones-y-botones.md
Resistencia Dev 53a5e3886e feat: Implementar sesiones persistentes y botones de salida
- Añadido sistema de sesiones con localStorage
- Nuevo hook useSessionStorage para manejar sesiones
- Botón de salir de la partida (ExitGameButton) en todas las pantallas del juego
- Botón de logout (LogoutButton) solo en el lobby
- Evento leave_game en servidor para cerrar partida cuando alguien sale
- Evento reconnect_session para reconectar jugadores después de recargar
- Actualizado GameBoard para incluir botón de salida
- Actualizado page.tsx para manejar sesiones y logout
2025-12-22 16:51:35 +01:00

63 lines
1.8 KiB
Markdown

---
description: Implementación de sesiones persistentes y botones de salida
---
# Implementación de Sesiones y Botones de Salida
## Objetivo
Implementar tres mejoras principales:
1. Sistema de sesiones persistentes
2. Botón de salir de la partida (en todas las pantallas de juego)
3. Botón de salir del juego (solo en lobby)
## Tareas
### 1. Sistema de Sesiones Persistentes
**Cliente:**
- Crear hook `useSessionStorage` para manejar sesiones
- Guardar en localStorage:
- `playerName` y `fullPlayerName`
- `currentView` (login/lobby/game)
- `roomId` si está en una partida
- Al cargar la app, verificar si hay sesión activa
- Si hay sesión, reconectar al servidor y recuperar estado
**Servidor:**
- Implementar evento `reconnect_session` para validar y recuperar estado
- Mantener mapping de `socketId` a `playerId` persistente
- Al reconectar, actualizar el socketId del jugador en la partida
### 2. Botón de Salir de la Partida
**Cliente:**
- Crear componente `ExitGameButton` con icono de flecha
- Posicionar arriba a la izquierda
- Mostrar en todas las fases del juego (no en lobby)
- Al hacer clic, emitir evento `leave_game`
**Servidor:**
- Implementar evento `leave_game`
- Notificar a todos los jugadores que alguien salió
- Eliminar la partida de la BD
- Devolver a todos al lobby
### 3. Botón de Salir del Juego
**Cliente:**
- Crear componente `LogoutButton` con icono de apagar
- Posicionar arriba a la izquierda solo en lobby
- Al hacer clic:
- Limpiar localStorage
- Volver a vista de login
- Desconectar socket si está en partida
## Orden de Implementación
1. Crear hooks y utilidades para sesiones
2. Implementar botón de salir del juego (logout)
3. Implementar botón de salir de la partida
4. Implementar lógica de reconexión en servidor
5. Integrar sistema de sesiones en el cliente
6. Pruebas