Fix attached remove (#2661)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
This commit is contained in:
Denis Bykhov 2023-02-20 14:06:27 +06:00 committed by GitHub
parent 0e6c458bfe
commit 042a8a3f87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 4 deletions

View File

@ -356,17 +356,19 @@ export abstract class TxProcessor implements WithTx {
static buildDoc2Doc<D extends Doc>(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<Doc, AttachedDoc>
>
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<D>).objectId
doc = TxProcessor.createDoc2Doc(createTx as TxCreateDoc<Doc>)
for (let tx of txes) {
if (collectionTxes) {
if ((tx as TxCUD<D>).objectId !== objectId && tx._class === core.class.TxCollectionCUD) {
tx = TxProcessor.extractTx(tx)
}
if (tx._class === core.class.TxUpdateDoc) {

View File

@ -350,8 +350,8 @@ class TServerStorage implements ServerStorage {
const removeAttachObjectIds: Ref<AttachedDoc>[] = []
const removeTxes = rawTxes
.filter((it) => this.hierarchy.isDerived(it._class, core.class.TxRemoveDoc))
.map((it) => TxProcessor.extractTx(it) as TxRemoveDoc<Doc>)
.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)