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
This commit is contained in:
62
.agent/workflows/sesiones-y-botones.md
Normal file
62
.agent/workflows/sesiones-y-botones.md
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user