Skip to content

Commit 5de7228

Browse files
authored
improvement(avatar): use selection-update as the source of truth for presence, ignore other socket ops (#2866)
* improvement(avatar): use selection-update as the source of truth for presence, ignore other socket ops * added logs
1 parent 75898c6 commit 5de7228

File tree

1 file changed

+14
-28
lines changed

1 file changed

+14
-28
lines changed

apps/sim/app/workspace/providers/socket-provider.tsx

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -406,43 +406,29 @@ export function SocketProvider({ children, user }: SocketProviderProps) {
406406
socketInstance.on('cursor-update', (data) => {
407407
setPresenceUsers((prev) => {
408408
const existingIndex = prev.findIndex((user) => user.socketId === data.socketId)
409-
if (existingIndex !== -1) {
410-
return prev.map((user) =>
411-
user.socketId === data.socketId ? { ...user, cursor: data.cursor } : user
412-
)
409+
if (existingIndex === -1) {
410+
logger.debug('Received cursor-update for unknown user', { socketId: data.socketId })
411+
return prev
413412
}
414-
return [
415-
...prev,
416-
{
417-
socketId: data.socketId,
418-
userId: data.userId,
419-
userName: data.userName,
420-
avatarUrl: data.avatarUrl,
421-
cursor: data.cursor,
422-
},
423-
]
413+
return prev.map((user) =>
414+
user.socketId === data.socketId ? { ...user, cursor: data.cursor } : user
415+
)
424416
})
425417
eventHandlers.current.cursorUpdate?.(data)
426418
})
427419

428420
socketInstance.on('selection-update', (data) => {
429421
setPresenceUsers((prev) => {
430422
const existingIndex = prev.findIndex((user) => user.socketId === data.socketId)
431-
if (existingIndex !== -1) {
432-
return prev.map((user) =>
433-
user.socketId === data.socketId ? { ...user, selection: data.selection } : user
434-
)
435-
}
436-
return [
437-
...prev,
438-
{
423+
if (existingIndex === -1) {
424+
logger.debug('Received selection-update for unknown user', {
439425
socketId: data.socketId,
440-
userId: data.userId,
441-
userName: data.userName,
442-
avatarUrl: data.avatarUrl,
443-
selection: data.selection,
444-
},
445-
]
426+
})
427+
return prev
428+
}
429+
return prev.map((user) =>
430+
user.socketId === data.socketId ? { ...user, selection: data.selection } : user
431+
)
446432
})
447433
eventHandlers.current.selectionUpdate?.(data)
448434
})

0 commit comments

Comments
 (0)