diff --git a/server/src/controllers/auth.controller.ts b/server/src/controllers/auth.controller.ts index 2e2b067..ca417e7 100644 --- a/server/src/controllers/auth.controller.ts +++ b/server/src/controllers/auth.controller.ts @@ -2,6 +2,9 @@ import type { Request, Response } from "express"; import type { User } from "@chessu/types"; import xss from "xss"; +import { activeGames } from "../db/models/game.model.js"; +import { io } from "../server.js"; + export const getCurrentSession = async (req: Request, res: Response) => { try { if (req.session.user) { @@ -36,6 +39,29 @@ export const guestSession = async (req: Request, res: Response) => { } else if (typeof req.session.user.id === "string" && req.session.user.name !== name) { // update guest name req.session.user.name = name; + + const game = activeGames.find( + (g) => + g.white?.id === req.session.user.id || + g.black?.id === req.session.user.id || + g.observers?.find((o) => o.id === req.session.user.id) + ); + if (game) { + if (game.host?.id === req.session.user.id) { + game.host.name = name; + } + if (game.white?.id === req.session.user.id) { + game.white.name = name; + } else if (game.black?.id === req.session.user.id) { + game.black.name = name; + } else { + const observer = game.observers?.find((o) => o.id === req.session.user.id); + if (observer) { + observer.name = name; + } + } + io.to(game.code as string).emit("receivedLatestGame", game); + } } req.session.save(() => { res.status(201).json(req.session.user);