import { useState, useEffect, useCallback } from 'react';

interface SessionData {
    playerName: string;
    fullPlayerName: string;
    currentView: 'login' | 'lobby' | 'game';
    roomId?: string;
}

export function useSessionStorage() {
    const [session, setSession] = useState<SessionData | null>(null);

    // Cargar sesión al iniciar
    useEffect(() => {
        const savedSession = localStorage.getItem('resistencia_session');
        if (savedSession) {
            try {
                const parsed = JSON.parse(savedSession);
                setSession(parsed);
            } catch (e) {
                console.error('Error parsing session:', e);
                localStorage.removeItem('resistencia_session');
            }
        }
    }, []);

    // Guardar sesión
    const saveSession = useCallback((data: SessionData) => {
        localStorage.setItem('resistencia_session', JSON.stringify(data));
        setSession(data);
    }, []);

    // Actualizar sesión parcialmente
    const updateSession = useCallback((partial: Partial<SessionData>) => {
        setSession(prev => {
            if (!prev) return null;
            const updated = { ...prev, ...partial };
            localStorage.setItem('resistencia_session', JSON.stringify(updated));
            return updated;
        });
    }, []);

    // Limpiar sesión
    const clearSession = useCallback(() => {
        localStorage.removeItem('resistencia_session');
        setSession(null);
    }, []);

    return {
        session,
        saveSession,
        updateSession,
        clearSession
    };
}
