Spaces:
Sleeping
Sleeping
rename fix
Browse files- dist/handlers/MessageHandler.d.ts.map +1 -1
- dist/handlers/MessageHandler.js +33 -0
- dist/handlers/MessageHandler.js.map +1 -1
- dist/index.js +1 -1
- dist/index.js.map +1 -1
- dist/services/RoomManager.d.ts +1 -0
- dist/services/RoomManager.d.ts.map +1 -1
- dist/services/RoomManager.js +14 -0
- dist/services/RoomManager.js.map +1 -1
- dist/types.d.ts +2 -1
- dist/types.d.ts.map +1 -1
- dist/types.js +1 -0
- dist/types.js.map +1 -1
- src/handlers/MessageHandler.ts +9 -4
dist/handlers/MessageHandler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"version":3,"file":"MessageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/MessageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD,qBAAa,cAAc;IACvB,MAAM,CAAC,MAAM,CACT,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,GACzB,IAAI;
|
|
|
|
| 1 |
+
{"version":3,"file":"MessageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/MessageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD,qBAAa,cAAc;IACvB,MAAM,CAAC,MAAM,CACT,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,GACzB,IAAI;CAiIV"}
|
dist/handlers/MessageHandler.js
CHANGED
|
@@ -21,6 +21,7 @@ export class MessageHandler {
|
|
| 21 |
return;
|
| 22 |
}
|
| 23 |
const { room_id, username, message } = parsedData;
|
|
|
|
| 24 |
// Normalize action to ensure case-insensitivity matches logic
|
| 25 |
const action = parsedData.action.toLowerCase();
|
| 26 |
switch (action) {
|
|
@@ -46,6 +47,38 @@ export class MessageHandler {
|
|
| 46 |
}));
|
| 47 |
}
|
| 48 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
case SocketAction.MESSAGE:
|
| 50 |
roomManager.broadcast(room_id, JSON.stringify({
|
| 51 |
message: `${message}`,
|
|
|
|
| 21 |
return;
|
| 22 |
}
|
| 23 |
const { room_id, username, message } = parsedData;
|
| 24 |
+
let { new_username } = parsedData;
|
| 25 |
// Normalize action to ensure case-insensitivity matches logic
|
| 26 |
const action = parsedData.action.toLowerCase();
|
| 27 |
switch (action) {
|
|
|
|
| 47 |
}));
|
| 48 |
}
|
| 49 |
break;
|
| 50 |
+
case SocketAction.RENAME: {
|
| 51 |
+
if (!new_username) {
|
| 52 |
+
socket.send(JSON.stringify({
|
| 53 |
+
message: `somebody tried to steal ${new_username}!`,
|
| 54 |
+
username: username,
|
| 55 |
+
room_id,
|
| 56 |
+
action: 'rename',
|
| 57 |
+
status: 0,
|
| 58 |
+
}));
|
| 59 |
+
return;
|
| 60 |
+
}
|
| 61 |
+
const renamed = roomManager.renameUser(room_id, username, new_username, socket);
|
| 62 |
+
if (!renamed) {
|
| 63 |
+
socket.send(JSON.stringify({
|
| 64 |
+
message: `somebody tried to steal ${new_username}!`,
|
| 65 |
+
username: username,
|
| 66 |
+
room_id,
|
| 67 |
+
action: 'rename',
|
| 68 |
+
status: 0,
|
| 69 |
+
}));
|
| 70 |
+
return;
|
| 71 |
+
}
|
| 72 |
+
roomManager.broadcast(room_id, JSON.stringify({
|
| 73 |
+
message: `${username} is now known as ${new_username}`,
|
| 74 |
+
username: new_username,
|
| 75 |
+
old_username: username,
|
| 76 |
+
room_id,
|
| 77 |
+
action: 'rename',
|
| 78 |
+
status: 1,
|
| 79 |
+
}));
|
| 80 |
+
break;
|
| 81 |
+
}
|
| 82 |
case SocketAction.MESSAGE:
|
| 83 |
roomManager.broadcast(room_id, JSON.stringify({
|
| 84 |
message: `${message}`,
|
dist/handlers/MessageHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"version":3,"file":"MessageHandler.js","sourceRoot":"","sources":["../../src/handlers/MessageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,OAAO,cAAc;IACvB,MAAM,CAAC,MAAM,CACT,UAAkB,EAClB,MAAiB,EACjB,WAAwB;QAExB,IAAI,UAAe,CAAA;QAEnB,IAAI,CAAC;YACD,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;YAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACjE,OAAM;QACV,CAAC;QAED,mDAAmD;QACnD,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC;gBACX,KAAK,EAAE,8CAA8C;gBACrD,MAAM,EAAE,CAAC;aACZ,CAAC,CACL,CAAA;YACD,OAAM;QACV,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAAA;QACjD,8DAA8D;QAC9D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QAE9C,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,YAAY,CAAC,IAAI;gBAClB,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAC/C,WAAW,CAAC,SAAS,CACjB,OAAO,EACP,IAAI,CAAC,SAAS,CAAC;oBACX,OAAO,EAAE,GAAG,QAAQ,mBAAmB,OAAO,QAAQ;oBACtD,QAAQ,EAAE,GAAG,QAAQ,EAAE;oBACvB,OAAO,EAAE,GAAG,OAAO,EAAE;oBACrB,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,CAAC;iBACZ,CAAC,CACL,CAAA;gBACD,MAAK;YAET,KAAK,YAAY,CAAC,KAAK;gBACnB,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAC3D,IAAI,UAAU,EAAE,CAAC;oBACb,WAAW,CAAC,SAAS,CACjB,OAAO,EACP,IAAI,CAAC,SAAS,CAAC;wBACX,OAAO,EAAE,GAAG,QAAQ,iBAAiB,OAAO,QAAQ;wBACpD,QAAQ,EAAE,GAAG,QAAQ,EAAE;wBACvB,OAAO,EAAE,GAAG,OAAO,EAAE;wBACrB,MAAM,EAAE,OAAO;wBACf,MAAM,EAAE,CAAC;qBACZ,CAAC,CACL,CAAA;gBACL,CAAC;gBACD,MAAK;YAET,KAAK,YAAY,CAAC,OAAO;gBACrB,WAAW,CAAC,SAAS,CACjB,OAAO,EACP,IAAI,CAAC,SAAS,CAAC;oBACX,OAAO,EAAE,GAAG,OAAO,EAAE;oBACrB,QAAQ,EAAE,GAAG,QAAQ,EAAE;oBACvB,OAAO,EAAE,GAAG,OAAO,EAAE;oBACrB,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,CAAC;iBACZ,CAAC,CACL,CAAA;gBACD,MAAK;YAET;gBACI,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC;oBACX,KAAK,EAAE,mBAAmB,MAAM,EAAE;oBAClC,MAAM,EAAE,CAAC;iBACZ,CAAC,CACL,CAAA;gBACD,MAAK;QACb,CAAC;IACL,CAAC;CACJ"}
|
|
|
|
| 1 |
+
{"version":3,"file":"MessageHandler.js","sourceRoot":"","sources":["../../src/handlers/MessageHandler.ts"],"names":[],"mappings":"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"}
|
dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { WebSocketServer } from 'ws';
|
|
| 3 |
import { RoomManager } from './services/RoomManager.js';
|
| 4 |
import { MessageHandler } from './handlers/MessageHandler.js';
|
| 5 |
const roomManager = new RoomManager();
|
| 6 |
-
const PORT =
|
| 7 |
const server = http.createServer((req, res) => {
|
| 8 |
// Handle simple GET /
|
| 9 |
if (req.method === 'GET' && req.url === '/') {
|
|
|
|
| 3 |
import { RoomManager } from './services/RoomManager.js';
|
| 4 |
import { MessageHandler } from './handlers/MessageHandler.js';
|
| 5 |
const roomManager = new RoomManager();
|
| 6 |
+
const PORT = process.env.PORT || 7860;
|
| 7 |
const server = http.createServer((req, res) => {
|
| 8 |
// Handle simple GET /
|
| 9 |
if (req.method === 'GET' && req.url === '/') {
|
dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAGrC,MAAM,IAAI,GAAG,IAAI,CAAA;
|
|
|
|
| 1 |
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAGrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAA;AAErC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1C,sBAAsB;IACtB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAA;QACpD,GAAG,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;IAC3D,CAAC;SAAM,CAAC;QACJ,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAA;QACpD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACxB,CAAC;AACL,CAAC,CAAC,CAAA;AAEF,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAE3C,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAEhC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE;QAC7B,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACrB,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAA;AAC7D,CAAC,CAAC,CAAA"}
|
dist/services/RoomManager.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare class RoomManager {
|
|
| 7 |
* Creates the room if it doesn't exist.
|
| 8 |
*/
|
| 9 |
joinRoom(roomId: string, username: string, socket: WebSocket): void;
|
|
|
|
| 10 |
/**
|
| 11 |
* Removes a user from a room.
|
| 12 |
* Cleans up the room if it becomes empty.
|
|
|
|
| 7 |
* Creates the room if it doesn't exist.
|
| 8 |
*/
|
| 9 |
joinRoom(roomId: string, username: string, socket: WebSocket): void;
|
| 10 |
+
renameUser(roomId: string, username: string, newUsername: string, socket: WebSocket): boolean;
|
| 11 |
/**
|
| 12 |
* Removes a user from a room.
|
| 13 |
* Cleans up the room if it becomes empty.
|
dist/services/RoomManager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"version":3,"file":"RoomManager.d.ts","sourceRoot":"","sources":["../../src/services/RoomManager.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAE1B,qBAAa,WAAW;IAEpB,OAAO,CAAC,KAAK,CAAqC;;IAMlD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAOnE;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYpD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CAUnD"}
|
|
|
|
| 1 |
+
{"version":3,"file":"RoomManager.d.ts","sourceRoot":"","sources":["../../src/services/RoomManager.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAE1B,qBAAa,WAAW;IAEpB,OAAO,CAAC,KAAK,CAAqC;;IAMlD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAOnE,UAAU,CACN,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,SAAS,GAClB,OAAO;IAeV;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYpD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CAUnD"}
|
dist/services/RoomManager.js
CHANGED
|
@@ -15,6 +15,20 @@ export class RoomManager {
|
|
| 15 |
}
|
| 16 |
this.rooms.get(roomId)?.set(username, socket);
|
| 17 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
/**
|
| 19 |
* Removes a user from a room.
|
| 20 |
* Cleans up the room if it becomes empty.
|
|
|
|
| 15 |
}
|
| 16 |
this.rooms.get(roomId)?.set(username, socket);
|
| 17 |
}
|
| 18 |
+
renameUser(roomId, username, newUsername, socket) {
|
| 19 |
+
const room = this.rooms.get(roomId);
|
| 20 |
+
if (!room)
|
| 21 |
+
return false;
|
| 22 |
+
if (!room.has(username))
|
| 23 |
+
return false;
|
| 24 |
+
if (room.has(newUsername))
|
| 25 |
+
return false;
|
| 26 |
+
// Remove old username
|
| 27 |
+
room.delete(username);
|
| 28 |
+
// Add new username with same socket
|
| 29 |
+
room.set(newUsername, socket);
|
| 30 |
+
return true;
|
| 31 |
+
}
|
| 32 |
/**
|
| 33 |
* Removes a user from a room.
|
| 34 |
* Cleans up the room if it becomes empty.
|
dist/services/RoomManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"version":3,"file":"RoomManager.js","sourceRoot":"","sources":["../../src/services/RoomManager.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAE1B,MAAM,OAAO,WAAW;IACpB,wCAAwC;IAChC,KAAK,CAAqC;IAElD;QACI,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAAc,EAAE,QAAgB,EAAE,MAAiB;QACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACrC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,MAAc,EAAE,QAAgB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACrC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC7B,CAAC;YACD,OAAO,OAAO,CAAA;QAClB,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc,EAAE,OAAe;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
|
|
|
|
| 1 |
+
{"version":3,"file":"RoomManager.js","sourceRoot":"","sources":["../../src/services/RoomManager.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAE1B,MAAM,OAAO,WAAW;IACpB,wCAAwC;IAChC,KAAK,CAAqC;IAElD;QACI,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAAc,EAAE,QAAgB,EAAE,MAAiB;QACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACrC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,UAAU,CACN,MAAc,EACd,QAAgB,EAChB,WAAmB,EACnB,MAAiB;QAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QAEvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAA;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAA;QAEvC,sBAAsB;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAErB,oCAAoC;QACpC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAA;IACf,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,MAAc,EAAE,QAAgB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACrC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC7B,CAAC;YACD,OAAO,OAAO,CAAA;QAClB,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc,EAAE,OAAe;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
|
dist/types.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
| 1 |
export declare enum SocketAction {
|
| 2 |
JOIN = "join",
|
| 3 |
LEAVE = "leave",
|
| 4 |
-
MESSAGE = "message"
|
|
|
|
| 5 |
}
|
| 6 |
export interface WebSocketMessage {
|
| 7 |
room_id: string;
|
|
|
|
| 1 |
export declare enum SocketAction {
|
| 2 |
JOIN = "join",
|
| 3 |
LEAVE = "leave",
|
| 4 |
+
MESSAGE = "message",
|
| 5 |
+
RENAME = "rename"
|
| 6 |
}
|
| 7 |
export interface WebSocketMessage {
|
| 8 |
room_id: string;
|
dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACpB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,OAAO,YAAY;
|
|
|
|
| 1 |
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACpB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACvB"}
|
dist/types.js
CHANGED
|
@@ -3,5 +3,6 @@ export var SocketAction;
|
|
| 3 |
SocketAction["JOIN"] = "join";
|
| 4 |
SocketAction["LEAVE"] = "leave";
|
| 5 |
SocketAction["MESSAGE"] = "message";
|
|
|
|
| 6 |
})(SocketAction || (SocketAction = {}));
|
| 7 |
//# sourceMappingURL=types.js.map
|
|
|
|
| 3 |
SocketAction["JOIN"] = "join";
|
| 4 |
SocketAction["LEAVE"] = "leave";
|
| 5 |
SocketAction["MESSAGE"] = "message";
|
| 6 |
+
SocketAction["RENAME"] = "rename";
|
| 7 |
})(SocketAction || (SocketAction = {}));
|
| 8 |
//# sourceMappingURL=types.js.map
|
dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
|
|
| 1 |
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACpB,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;AACrB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB"}
|
src/handlers/MessageHandler.ts
CHANGED
|
@@ -31,7 +31,6 @@ export class MessageHandler {
|
|
| 31 |
|
| 32 |
const { room_id, username, message } = parsedData
|
| 33 |
let { new_username } = parsedData
|
| 34 |
-
if (!new_username) new_username = username
|
| 35 |
// Normalize action to ensure case-insensitivity matches logic
|
| 36 |
const action = parsedData.action.toLowerCase()
|
| 37 |
|
|
@@ -67,10 +66,13 @@ export class MessageHandler {
|
|
| 67 |
break
|
| 68 |
|
| 69 |
case SocketAction.RENAME: {
|
| 70 |
-
if (!new_username
|
| 71 |
socket.send(
|
| 72 |
JSON.stringify({
|
| 73 |
-
|
|
|
|
|
|
|
|
|
|
| 74 |
status: 0,
|
| 75 |
})
|
| 76 |
)
|
|
@@ -87,7 +89,10 @@ export class MessageHandler {
|
|
| 87 |
if (!renamed) {
|
| 88 |
socket.send(
|
| 89 |
JSON.stringify({
|
| 90 |
-
|
|
|
|
|
|
|
|
|
|
| 91 |
status: 0,
|
| 92 |
})
|
| 93 |
)
|
|
|
|
| 31 |
|
| 32 |
const { room_id, username, message } = parsedData
|
| 33 |
let { new_username } = parsedData
|
|
|
|
| 34 |
// Normalize action to ensure case-insensitivity matches logic
|
| 35 |
const action = parsedData.action.toLowerCase()
|
| 36 |
|
|
|
|
| 66 |
break
|
| 67 |
|
| 68 |
case SocketAction.RENAME: {
|
| 69 |
+
if (!new_username) {
|
| 70 |
socket.send(
|
| 71 |
JSON.stringify({
|
| 72 |
+
message: `somebody tried to steal ${new_username}!`,
|
| 73 |
+
username: username,
|
| 74 |
+
room_id,
|
| 75 |
+
action: 'rename',
|
| 76 |
status: 0,
|
| 77 |
})
|
| 78 |
)
|
|
|
|
| 89 |
if (!renamed) {
|
| 90 |
socket.send(
|
| 91 |
JSON.stringify({
|
| 92 |
+
message: `somebody tried to steal ${new_username}!`,
|
| 93 |
+
username: username,
|
| 94 |
+
room_id,
|
| 95 |
+
action: 'rename',
|
| 96 |
status: 0,
|
| 97 |
})
|
| 98 |
)
|