Skip to content

Commit 5028a87

Browse files
committed
fix: 한 사용자만 노드를 따로 움직일 수 있는 문제 수정
1 parent a0e9764 commit 5028a87

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

frontend/src/components/canvas/index.tsx

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,10 @@ export default function Canvas({ className }: CanvasProps) {
8686
return [...nds, node];
8787
}
8888
const newNodes = [...nds];
89-
newNodes[index] = node;
89+
newNodes[index] = {
90+
...newNodes[index],
91+
position: node.position,
92+
};
9093
return newNodes;
9194
});
9295
} else if (change.action === "delete") {
@@ -122,20 +125,22 @@ export default function Canvas({ className }: CanvasProps) {
122125

123126
pages.forEach((page) => {
124127
const pageId = page.id.toString();
125-
//if (!existingPageIds.current.has(pageId)) {
128+
const existingNode = nodesMap.get(pageId) as Node | undefined;
129+
126130
const newNode = {
127131
id: pageId,
128-
position: {
132+
position: existingNode?.position || {
129133
x: Math.random() * 500,
130134
y: Math.random() * 500,
131135
},
132136
data: { title: page.title, id: page.id },
133137
type: "note",
134138
};
135139

136-
nodesMap.set(pageId, newNode);
137-
existingPageIds.current.add(pageId);
138-
//}
140+
if (!existingNode) {
141+
nodesMap.set(pageId, newNode);
142+
existingPageIds.current.add(pageId);
143+
}
139144
});
140145
}, [pages]);
141146

@@ -144,22 +149,22 @@ export default function Canvas({ className }: CanvasProps) {
144149
if (!ydoc) return;
145150
const nodesMap = ydoc.getMap("nodes");
146151

147-
onNodesChange(changes);
148-
149152
changes.forEach((change) => {
150153
if (change.type === "position" && change.position) {
151-
const node = nodes.find((n) => n.id === change.id);
152-
if (node) {
154+
const existingNode = nodesMap.get(change.id) as Node | undefined;
155+
if (existingNode) {
153156
const updatedNode = {
154-
...node,
157+
...existingNode,
155158
position: change.position,
156159
};
157160
nodesMap.set(change.id, updatedNode);
158161
}
159162
}
160163
});
164+
165+
onNodesChange(changes);
161166
},
162-
[nodes, onNodesChange],
167+
[onNodesChange],
163168
);
164169

165170
const handleEdgesChange = useCallback(

0 commit comments

Comments
 (0)