瀏覽代碼

:art: Improve heading/li-doc converting https://github.com/siyuan-note/siyuan/issues/13225

Daniel 7 月之前
父節點
當前提交
2f30253366
共有 2 個文件被更改,包括 9 次插入0 次删除
  1. 7 0
      kernel/model/heading.go
  2. 2 0
      kernel/model/listitem.go

+ 7 - 0
kernel/model/heading.go

@@ -22,6 +22,7 @@ import (
 	"path"
 	"path/filepath"
 	"strings"
+	"sync"
 
 	"github.com/88250/gulu"
 	"github.com/88250/lute/ast"
@@ -117,12 +118,16 @@ func (tx *Transaction) doUnfoldHeading(operation *Operation) (ret *TxErr) {
 	return
 }
 
+var docConvertLock = sync.Mutex{}
+
 func Doc2Heading(srcID, targetID string, after bool) (srcTreeBox, srcTreePath string, err error) {
 	if !ast.IsNodeIDPattern(srcID) || !ast.IsNodeIDPattern(targetID) {
 		return
 	}
 
 	FlushTxQueue()
+	docConvertLock.Lock()
+	defer docConvertLock.Unlock()
 
 	srcTree, _ := LoadTreeByBlockID(srcID)
 	if nil == srcTree {
@@ -277,6 +282,8 @@ func Doc2Heading(srcID, targetID string, after bool) (srcTreeBox, srcTreePath st
 
 func Heading2Doc(srcHeadingID, targetBoxID, targetPath, previousPath string) (srcRootBlockID, newTargetPath string, err error) {
 	FlushTxQueue()
+	docConvertLock.Lock()
+	defer docConvertLock.Unlock()
 
 	srcTree, _ := LoadTreeByBlockID(srcHeadingID)
 	if nil == srcTree {

+ 2 - 0
kernel/model/listitem.go

@@ -29,6 +29,8 @@ import (
 
 func ListItem2Doc(srcListItemID, targetBoxID, targetPath, previousPath string) (srcRootBlockID, newTargetPath string, err error) {
 	FlushTxQueue()
+	docConvertLock.Lock()
+	defer docConvertLock.Unlock()
 
 	srcTree, _ := LoadTreeByBlockID(srcListItemID)
 	if nil == srcTree {