@@ -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