diff --git a/nestjs-BE/server/src/crdt/operation.ts b/nestjs-BE/server/src/crdt/operation.ts index ef2704c7..11d7c3af 100644 --- a/nestjs-BE/server/src/crdt/operation.ts +++ b/nestjs-BE/server/src/crdt/operation.ts @@ -141,6 +141,10 @@ export class OperationMove extends Operation { const node = tree.get(this.id); const oldParentId = node.parentId; + if (tree.isAncestor(this.parentId, this.id)) { + return { operation: this, oldParentId }; + } + tree.removeNode(this.id); tree.attachNode(this.id, this.parentId); return { operation: this, oldParentId }; diff --git a/nestjs-BE/server/src/crdt/tree.ts b/nestjs-BE/server/src/crdt/tree.ts index 772152a2..bcf7a0ae 100644 --- a/nestjs-BE/server/src/crdt/tree.ts +++ b/nestjs-BE/server/src/crdt/tree.ts @@ -41,6 +41,7 @@ export class Tree { const targetIndex = parentNode.children.indexOf(targetId); if (targetIndex !== -1) parentNode.children.splice(targetIndex, 1); + targetNode.parentId = '0'; return this.nodes.get(targetId); }