From 2b8ab0ddcac43b253a4fd47c46ffa34622a7cfc2 Mon Sep 17 00:00:00 2001 From: Hri7566 Date: Fri, 26 Jan 2024 05:02:32 -0500 Subject: [PATCH] Implement color admin message --- src/ws/Socket.ts | 8 ++++++-- src/ws/events/admin/handlers/color.ts | 20 +++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/ws/Socket.ts b/src/ws/Socket.ts index b24ac42..d0b8584 100644 --- a/src/ws/Socket.ts +++ b/src/ws/Socket.ts @@ -335,11 +335,15 @@ export class Socket extends EventEmitter { ]); } - public async userset(name?: string, color?: string) { + public async userset( + name?: string, + color?: string, + admin: boolean = false + ) { let isColor = false; // Color changing - if (color && config.enableColorChanging) { + if (color && (config.enableColorChanging || admin)) { isColor = typeof color === "string" && !!color.match(/^#[0-9a-f]{6}$/i); } diff --git a/src/ws/events/admin/handlers/color.ts b/src/ws/events/admin/handlers/color.ts index b5b3c64..005ca71 100644 --- a/src/ws/events/admin/handlers/color.ts +++ b/src/ws/events/admin/handlers/color.ts @@ -1,9 +1,27 @@ +import { readUser, updateUser } from "../../../../data/user"; import { ServerEventListener } from "../../../../util/types"; +import { findSocketsByUserID } from "../../../Socket"; import { eventGroups } from "../../../events"; export const color: ServerEventListener<"color"> = { id: "color", - callback: (msg, socket) => { + callback: async (msg, socket) => { // TODO color + const id = msg._id; + const color = msg.color; + + if (typeof id !== "string") return; + if (typeof color !== "string") return; + + const user = await readUser(msg._id); + if (!user) return; + + user.color = color; + await updateUser(id, user); + + const toUpdate = findSocketsByUserID(id); + toUpdate.forEach(s => { + s.userset(undefined, msg.color); + }); } };