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

1.8 KiB

description
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