Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion server/src/storage/sqlite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,14 +339,18 @@ export class SqliteStorage implements Storage {
async salasDeUsuario(usuarioId: string): Promise<SalaDeUsuario[]> {
const rows = this.db
.prepare(
`SELECT s.room_id, s.visitada_en FROM salas_de_usuario s
`SELECT s.room_id, s.visitada_en, r.nombre FROM salas_de_usuario s
JOIN rooms r ON r.id = s.room_id
WHERE s.usuario_id = ? ORDER BY s.visitada_en DESC`,
)
.all(usuarioId) as Record<string, unknown>[];
return rows.map((r) => ({
roomId: String(r.room_id),
visitadaEn: Number(r.visitada_en),
// El nombre sale del JOIN que ya estaba ahi. Sin el, la lista de quien
// entra con cuenta pisaba la del navegador (que si los tenia) y todas las
// salas volvian a verse por su id.
nombre: r.nombre == null ? null : String(r.nombre),
}));
}

Expand Down
2 changes: 2 additions & 0 deletions server/src/storage/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ export interface StoredUsuario {
export interface SalaDeUsuario {
roomId: string;
visitadaEn: number;
/** Como le dice la gente. Null si nadie la ha nombrado: ahi se ve el id. */
nombre?: string | null;
}

export interface Storage {
Expand Down
6 changes: 4 additions & 2 deletions web/src/cuenta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,10 @@ export async function sincronizarSalas(): Promise<SalaVisitada[]> {
body: JSON.stringify({ salas: locales }),
});
if (!res.ok) return locales;
const { salas } = (await res.json()) as { salas: { roomId: string; visitadaEn: number }[] };
return salas.map((s) => ({ id: s.roomId, visitadaEn: s.visitadaEn }));
const { salas } = (await res.json()) as {
salas: { roomId: string; visitadaEn: number; nombre?: string | null }[];
};
return salas.map((s) => ({ id: s.roomId, visitadaEn: s.visitadaEn, nombre: s.nombre ?? null }));
} catch {
// Sin server, lo de este navegador sigue sirviendo.
return locales;
Expand Down
Loading