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

This commit is contained in:
Liang Ding 2022-09-09 17:31:48 +08:00
parent 8f3dd9fbf4
commit 8811f329f9
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -22,7 +22,6 @@ import (
"time"
"github.com/88250/gulu"
"github.com/88250/lute"
"github.com/88250/lute/ast"
"github.com/88250/lute/html"
"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))
}
luteEngine := NewLute()
oldDom := lute.RenderNodeBlockDOM(node, luteEngine.ParseOptions, luteEngine.RenderOptions)
oldAttrs := parse.IAL2Map(node.KramdownIAL)
for name, _ := range nameValues {
for i := 0; i < len(name); i++ {
@ -131,21 +129,17 @@ func SetBlockAttrs(id string, nameValues map[string]string) (err error) {
IncSync()
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{{
DoOperations: []*Operation{doOp},
UndoOperations: []*Operation{undoOp},
UndoOperations: []*Operation{},
}}
pushBroadcastTransactions(trans)
pushBroadcastAttrTransactions(trans)
return
}
func pushBroadcastTransactions(transactions []*Transaction) {
func pushBroadcastAttrTransactions(transactions []*Transaction) {
evt := util.NewCmdResult("transactions", 0, util.PushModeBroadcast, util.PushModeBroadcast)
evt.Data = transactions
util.PushEvent(evt)