From f4a3b0e2f8a46bb38de129718b9cc29e8e8de233 Mon Sep 17 00:00:00 2001 From: ErickHub192 Date: Tue, 4 Aug 2026 13:24:42 -0600 Subject: [PATCH] Las salas donde entraste, en un menu Si cerrabas la pestana sin guardar el link, la sala se perdia. Los nombres son legibles a proposito (compa-zona-49, no un uuid) justo para poder dictarlos por telefono, pero nadie se los aprende. Ahora hay un menu arriba a la izquierda con las ultimas 20 salas, ordenadas por cuando entraste. Todo en localStorage: sin cuenta y sin servidor. Desplegable y no sidebar. La lista se abre una o dos veces por sesion -- entras a una sala y te quedas horas, no saltas entre ellas como en un chat -- y un panel permanente le quitaria ancho al preview, que es lo que todos estan mirando. La Sala ya son dos columnas; una tercera dejaria el preview en menos de 800px en una laptop. NO separa "mias" de "compartidas conmigo". Esa distincion se borra sola: entras a una que te pasaron, invitas a alguien, y ya es tuya tambien. Y sin login no hay forma de saber quien creo que. Lo que si distingue es cuando entraste. La visita se anota al ENTRAR con nombre, no al leer el hash: abrir un link que no llegaste a usar no deberia llenarte la lista. --- web/src/App.tsx | 12 ++- web/src/MenuSalas.tsx | 116 ++++++++++++++++++++++++++++ web/src/historial-salas.ts | 64 ++++++++++++++++ web/src/i18n.tsx | 12 +++ web/src/styles.css | 150 +++++++++++++++++++++++++++++++++++++ 5 files changed, 352 insertions(+), 2 deletions(-) create mode 100644 web/src/MenuSalas.tsx create mode 100644 web/src/historial-salas.ts diff --git a/web/src/App.tsx b/web/src/App.tsx index 62713f0..64106e8 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -19,6 +19,8 @@ import { Historial } from "./Historial.js"; import { BackCanvas, type Endpoint } from "./BackCanvas.js"; import { KeyPanel, loadStoredCredencial, type Credencial } from "./KeyPanel.js"; import { useTextos } from "./i18n.js"; +import { MenuSalas } from "./MenuSalas.js"; +import { recordarSala } from "./historial-salas.js"; // El roomId vive en el hash de la URL: #/sala/taco-fiesta-42 function readRoomFromHash(): string | null { @@ -49,6 +51,9 @@ export function App() { setName={setName} onEnter={() => { localStorage.setItem("multi-name", name || "anónimo"); + // Se anota AQUÍ y no al leer el hash: abrir un link que no llegaste a + // usar no debería llenarte el historial. + recordarSala(roomId); setEntered(true); }} /> @@ -437,8 +442,11 @@ function Sala({ roomId, name }: { roomId: string; name: string }) { {/* Chat izquierda */}