Skip to content

Commit 5af204f

Browse files
authored
Merge pull request #170 from cephie-studios/canary
Canary
2 parents 5c4c908 + 46595e8 commit 5af204f

File tree

14 files changed

+898
-475
lines changed

14 files changed

+898
-475
lines changed
42.8 KB
Loading
32.7 KB
Binary file not shown.
10.6 KB
Binary file not shown.

server/websockets/chatWebsocket.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,13 @@ export function setupChatWebsocket(
9595

9696
socket.join(sessionId);
9797

98+
socket.on('typing', ({ username }: { username: string }) => {
99+
if (typeof username !== 'string' || username.length === 0 || username.length > 50) {
100+
return;
101+
}
102+
socket.to(sessionId).emit('userTyping', { userId, username });
103+
});
104+
98105
socket.on('chatMessage', async ({ user, message }) => {
99106
const sessionId = socket.data.sessionId;
100107
if (!sessionId || !message || message.length > 500) return;

server/websockets/globalChatWebsocket.ts

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,18 @@ export function setupGlobalChatWebsocket(
138138
return;
139139
}
140140

141+
try {
142+
const user = await mainDb
143+
.selectFrom('users')
144+
.select(['username'])
145+
.where('id', '=', userId)
146+
.executeTakeFirst();
147+
socket.data.username = user?.username || 'Unknown';
148+
} catch (error) {
149+
console.error('[Global Chat] Error fetching username:', error);
150+
socket.data.username = 'Unknown';
151+
}
152+
141153
socket.data.userId = userId;
142154
socket.data.station = station;
143155
socket.data.position = position;
@@ -160,7 +172,7 @@ export function setupGlobalChatWebsocket(
160172

161173
connectedGlobalChatUsers.set(userId, {
162174
id: userId,
163-
username: user?.username || 'Unknown',
175+
username: socket.data.username,
164176
avatar: avatarUrl,
165177
station: station,
166178
position: position || null,
@@ -188,8 +200,12 @@ export function setupGlobalChatWebsocket(
188200
}
189201
}
190202

203+
socket.on('globalTyping', ({ username }: { username: string }) => {
204+
socket.broadcast.emit('globalUserTyping', { userId, username: socket.data.username });
205+
});
206+
191207
socket.on('globalChatMessage', async ({ user, message }) => {
192-
if (!message || message.length > 500) return;
208+
if (!message || message.length > 500 || user.userId !== socket.data.userId) return;
193209

194210
const sanitizedMessage = sanitizeMessage(message, 500);
195211
if (!sanitizedMessage) return;
@@ -204,7 +220,7 @@ export function setupGlobalChatWebsocket(
204220

205221
connectedGlobalChatUsers.set(user.userId, {
206222
id: user.userId,
207-
username: user.username || existingUser?.username || 'Unknown',
223+
username: socket.data.username,
208224
avatar: avatarUrl || existingUser?.avatar || null,
209225
station: socket.data.station,
210226
position: socket.data.position || null,

0 commit comments

Comments
 (0)