From 3384b3e9eadc3907cc4e3563ae0f9d792d876a1d Mon Sep 17 00:00:00 2001 From: djk01281 Date: Thu, 5 Dec 2024 11:28:37 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B0=99=EC=9D=80=20clientId=EC=97=90?= =?UTF-8?q?=20=EB=8C=80=ED=95=9C=20=EC=BB=A4=EC=84=9C=20=ED=95=84=ED=84=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvas/ui/CollaborativeCursors/index.tsx | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/apps/frontend/src/features/canvas/ui/CollaborativeCursors/index.tsx b/apps/frontend/src/features/canvas/ui/CollaborativeCursors/index.tsx index 5d3d1fa7..342a3032 100644 --- a/apps/frontend/src/features/canvas/ui/CollaborativeCursors/index.tsx +++ b/apps/frontend/src/features/canvas/ui/CollaborativeCursors/index.tsx @@ -13,15 +13,23 @@ interface CollaborativeCursorsProps { export function CollaborativeCursors({ cursors }: CollaborativeCursorsProps) { const { flowToScreenPosition } = useReactFlow(); const { currentUser } = useUserStore(); - const validCursors = useMemo( - () => - Array.from(cursors.values()).filter( - (cursor) => - cursor.cursor && - (cursor.clientId as unknown as string) !== currentUser.clientId, - ), - [cursors], - ); + const validCursors = useMemo(() => { + const filteredCursors = Array.from(cursors.values()).filter( + (cursor) => + cursor.cursor && + (cursor.clientId as unknown as string) !== currentUser.clientId, + ); + + const uniqueCursors = filteredCursors.reduce((acc, current) => { + const exists = acc.find((item) => item.clientId === current.clientId); + if (!exists) { + acc.push(current); + } + return acc; + }, [] as AwarenessState[]); + + return uniqueCursors; + }, [cursors]); return (