From 042a8a3f870c24782635e65d706b488b87ad84f8 Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Mon, 20 Feb 2023 14:06:27 +0600 Subject: [PATCH] Fix attached remove (#2661) Signed-off-by: Denis Bykhov --- packages/core/src/tx.ts | 8 +++++--- server/core/src/storage.ts | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/core/src/tx.ts b/packages/core/src/tx.ts index 569a4d6889..38425dfc2d 100644 --- a/packages/core/src/tx.ts +++ b/packages/core/src/tx.ts @@ -356,17 +356,19 @@ export abstract class TxProcessor implements WithTx { static buildDoc2Doc(txes: Tx[]): D | undefined { let doc: Doc let createTx = txes.find((tx) => tx._class === core.class.TxCreateDoc) - const collectionTxes = false if (createTx === undefined) { const collectionTxes = txes.filter((tx) => tx._class === core.class.TxCollectionCUD) as Array< TxCollectionCUD > - createTx = collectionTxes.find((p) => p.tx._class === core.class.TxCreateDoc) + const collectionCreateTx = collectionTxes.find((p) => p.tx._class === core.class.TxCreateDoc) + if (collectionCreateTx === undefined) return + createTx = TxProcessor.extractTx(collectionCreateTx) } if (createTx === undefined) return + const objectId = (createTx as TxCreateDoc).objectId doc = TxProcessor.createDoc2Doc(createTx as TxCreateDoc) for (let tx of txes) { - if (collectionTxes) { + if ((tx as TxCUD).objectId !== objectId && tx._class === core.class.TxCollectionCUD) { tx = TxProcessor.extractTx(tx) } if (tx._class === core.class.TxUpdateDoc) { diff --git a/server/core/src/storage.ts b/server/core/src/storage.ts index a802b7cd29..c079648a28 100644 --- a/server/core/src/storage.ts +++ b/server/core/src/storage.ts @@ -350,8 +350,8 @@ class TServerStorage implements ServerStorage { const removeAttachObjectIds: Ref[] = [] const removeTxes = rawTxes - .filter((it) => this.hierarchy.isDerived(it._class, core.class.TxRemoveDoc)) .map((it) => TxProcessor.extractTx(it) as TxRemoveDoc) + .filter((it) => this.hierarchy.isDerived(it._class, core.class.TxRemoveDoc)) for (const rtx of removeTxes) { const isAttached = this.hierarchy.isDerived(rtx.objectClass, core.class.AttachedDoc)