Skip to content

Commit d79355e

Browse files
committed
improvement(avatar): use selection-update as the source of truth for presence, ignore other socket ops
1 parent b146728 commit d79355e

File tree

1 file changed

+10
-28
lines changed

1 file changed

+10
-28
lines changed

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

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -406,43 +406,25 @@ 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+
return prev
413411
}
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-
]
412+
return prev.map((user) =>
413+
user.socketId === data.socketId ? { ...user, cursor: data.cursor } : user
414+
)
424415
})
425416
eventHandlers.current.cursorUpdate?.(data)
426417
})
427418

428419
socketInstance.on('selection-update', (data) => {
429420
setPresenceUsers((prev) => {
430421
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-
)
422+
if (existingIndex === -1) {
423+
return prev
435424
}
436-
return [
437-
...prev,
438-
{
439-
socketId: data.socketId,
440-
userId: data.userId,
441-
userName: data.userName,
442-
avatarUrl: data.avatarUrl,
443-
selection: data.selection,
444-
},
445-
]
425+
return prev.map((user) =>
426+
user.socketId === data.socketId ? { ...user, selection: data.selection } : user
427+
)
446428
})
447429
eventHandlers.current.selectionUpdate?.(data)
448430
})

0 commit comments

Comments
 (0)