From d9b5110ea5122c3a2d45c02a3d944c89b3059c4b Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Dec 2023 20:53:59 +0800 Subject: [PATCH] :art: Improve kernel API `/api/block/appendBlock` https://github.com/siyuan-note/siyuan/issues/9955 --- kernel/model/transaction.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 73608c33d..352d1b03e 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -577,7 +577,24 @@ func (tx *Transaction) doAppendInsert(operation *Operation) (ret *TxErr) { for i := 0; i < len(toInserts); i++ { toInsert := toInserts[i] if isContainer { - if ast.NodeSuperBlock == node.Type { + if ast.NodeList == node.Type { + // 列表下只能挂列表项,所以这里需要分情况处理 https://github.com/siyuan-note/siyuan/issues/9955 + if ast.NodeList == toInsert.Type { + var childLis []*ast.Node + for childLi := toInsert.FirstChild; nil != childLi; childLi = childLi.Next { + childLis = append(childLis, childLi) + } + for _, childLi := range childLis { + node.AppendChild(childLi) + } + } else { + newLiID := ast.NewNodeID() + newLi := &ast.Node{ID: newLiID, Type: ast.NodeListItem, ListData: &ast.ListData{Typ: node.ListData.Typ}} + newLi.SetIALAttr("id", newLiID) + node.AppendChild(newLi) + newLi.AppendChild(toInsert) + } + } else if ast.NodeSuperBlock == node.Type { node.LastChild.InsertBefore(toInsert) } else { node.AppendChild(toInsert)