Parcourir la source

:art: 调用 API `setBlockAttrs` 后推送 Transaction https://github.com/siyuan-note/siyuan/issues/5847

Liang Ding il y a 2 ans
Parent
commit
8811f329f9
1 fichiers modifiés avec 6 ajouts et 12 suppressions
  1. 6 12
      kernel/model/blockial.go

+ 6 - 12
kernel/model/blockial.go

@@ -22,7 +22,6 @@ import (
 	"time"
 	"time"
 
 
 	"github.com/88250/gulu"
 	"github.com/88250/gulu"
-	"github.com/88250/lute"
 	"github.com/88250/lute/ast"
 	"github.com/88250/lute/ast"
 	"github.com/88250/lute/html"
 	"github.com/88250/lute/html"
 	"github.com/88250/lute/lex"
 	"github.com/88250/lute/lex"
@@ -106,8 +105,7 @@ func SetBlockAttrs(id string, nameValues map[string]string) (err error) {
 		return errors.New(fmt.Sprintf(Conf.Language(15), id))
 		return errors.New(fmt.Sprintf(Conf.Language(15), id))
 	}
 	}
 
 
-	luteEngine := NewLute()
-	oldDom := lute.RenderNodeBlockDOM(node, luteEngine.ParseOptions, luteEngine.RenderOptions)
+	oldAttrs := parse.IAL2Map(node.KramdownIAL)
 
 
 	for name, _ := range nameValues {
 	for name, _ := range nameValues {
 		for i := 0; i < len(name); i++ {
 		for i := 0; i < len(name); i++ {
@@ -131,21 +129,17 @@ func SetBlockAttrs(id string, nameValues map[string]string) (err error) {
 	IncSync()
 	IncSync()
 	cache.PutBlockIAL(id, parse.IAL2Map(node.KramdownIAL))
 	cache.PutBlockIAL(id, parse.IAL2Map(node.KramdownIAL))
 
 
-	dom := lute.RenderNodeBlockDOM(node, luteEngine.ParseOptions, luteEngine.RenderOptions)
-	if oldDom == dom {
-		return
-	}
-	doOp := &Operation{Action: "update", Data: dom, ID: id}
-	undoOp := &Operation{Action: "update", Data: oldDom, ID: id}
+	newAttrs := parse.IAL2Map(node.KramdownIAL)
+	doOp := &Operation{Action: "updateAttrs", Data: map[string]interface{}{"old": oldAttrs, "new": newAttrs}, ID: id}
 	trans := []*Transaction{{
 	trans := []*Transaction{{
 		DoOperations:   []*Operation{doOp},
 		DoOperations:   []*Operation{doOp},
-		UndoOperations: []*Operation{undoOp},
+		UndoOperations: []*Operation{},
 	}}
 	}}
-	pushBroadcastTransactions(trans)
+	pushBroadcastAttrTransactions(trans)
 	return
 	return
 }
 }
 
 
-func pushBroadcastTransactions(transactions []*Transaction) {
+func pushBroadcastAttrTransactions(transactions []*Transaction) {
 	evt := util.NewCmdResult("transactions", 0, util.PushModeBroadcast, util.PushModeBroadcast)
 	evt := util.NewCmdResult("transactions", 0, util.PushModeBroadcast, util.PushModeBroadcast)
 	evt.Data = transactions
 	evt.Data = transactions
 	util.PushEvent(evt)
 	util.PushEvent(evt)