Skip to content
This repository was archived by the owner on Dec 2, 2022. It is now read-only.

Commit af428cb

Browse files
author
Alexandros Semelidis
committed
resolving a conflict
2 parents 920ef78 + 91bb2d2 commit af428cb

File tree

4 files changed

+37
-5
lines changed

4 files changed

+37
-5
lines changed

src/client/public/index.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,11 @@ $(function onload() {
5656
objPanel.show();
5757
txtUsername.val('');
5858
chatEmpty();
59+
<<<<<<< HEAD
5960
panelEmpty();
61+
=======
62+
txtMessage.focus();
63+
>>>>>>> 91bb2d2083828c1184c8b25621cd214d8688992f
6064
chatWriteLine(`You are connected! (${s})`);
6165
getUsers();
6266
} else {
@@ -159,6 +163,12 @@ $(function onload() {
159163
);
160164
});
161165

166+
txtUsername.on('keypress', (e) => {
167+
if (e.which === 13) {
168+
btnJoin.click();
169+
}
170+
});
171+
162172
txtMessage.on('keypress', (e) => {
163173
if (e.which === 13) {
164174
btnSend.click();

src/server/Configuration.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const UPPERCASE_USERNAMES: boolean = false;

src/server/Connections.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ export function FindConnById(pId: string): Promise<Connection | null> {
4141
});
4242
}
4343

44+
export function FindConnByName(pName: string): Promise<Connection | null> {
45+
return new Promise((resolve) => {
46+
for (const [_Id, _Conn] of Connections.entries()) {
47+
if (_Conn.name.toUpperCase() === pName.toUpperCase()) {
48+
return resolve(_Conn);
49+
}
50+
}
51+
resolve(null);
52+
});
53+
}
54+
4455
export function RemoveConnById(pId: string): Promise<Boolean> {
4556
return new Promise((resolve) => {
4657
const deleted = Connections.delete(pId);

src/server/WebSocket.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ import {
1010
RemoveConnById,
1111
CheckConnById,
1212
ConnInfo,
13+
FindConnByName,
1314
} from './Connections.ts';
1415

16+
import { UPPERCASE_USERNAMES } from './Configuration.ts';
17+
1518
/**
1619
* h: Handler
1720
* s: Sender
@@ -49,14 +52,21 @@ export async function HandleWSConn(pWebSocket: WebSocket): Promise<void> {
4952
const objEvent: WSMessage = JSON.parse(event);
5053
switch (objEvent.h) {
5154
case 'join': {
52-
const _name = objEvent.d;
53-
if (/^[a-zA-Z0-9]+$/i.test(_name)) {
55+
const _name = UPPERCASE_USERNAMES
56+
? objEvent.d.toUpperCase()
57+
: objEvent.d;
58+
if (!/^[a-zA-Z0-9]+$/i.test(_name)) {
59+
await RespondJoin(_connInfo, 'Invalid username');
60+
} else if (await FindConnByName(_name)) {
61+
await RespondJoin(
62+
_connInfo,
63+
'Username already in use'
64+
);
65+
} else {
5466
_conn.state = true;
55-
_conn.name = objEvent.d;
67+
_conn.name = _name;
5668
await BroadcastJoin(_connInfo);
5769
await RespondJoin(_connInfo, 'OK');
58-
} else {
59-
await RespondJoin(_connInfo, 'Invalid username');
6070
}
6171
break;
6272
}

0 commit comments

Comments
 (0)