diff --git a/kernel/model/tag.go b/kernel/model/tag.go index d6f425c63..814e1c998 100644 --- a/kernel/model/tag.go +++ b/kernel/model/tag.go @@ -22,6 +22,7 @@ import ( "sort" "strings" + "github.com/88250/gulu" "github.com/88250/lute/ast" "github.com/emirpasic/gods/sets/hashset" "github.com/siyuan-note/logging" @@ -49,6 +50,8 @@ func RemoveTag(label string) (err error) { } } + var reloadTreeIDs []string + updateNodes := map[string]*ast.Node{} for treeID, blocks := range treeBlocks { util.PushEndlessProgress("[" + treeID + "]") tree, e := LoadTreeByBlockID(treeID) @@ -87,6 +90,8 @@ func RemoveTag(label string) (err error) { } } } + + updateNodes[node.ID] = node } for _, n := range unlinks { n.Unlink() @@ -97,9 +102,20 @@ func RemoveTag(label string) (err error) { return } util.RandomSleep(50, 150) + reloadTreeIDs = append(reloadTreeIDs, tree.ID) } - util.ReloadUI() + sql.FlushQueue() + + reloadTreeIDs = gulu.Str.RemoveDuplicatedElem(reloadTreeIDs) + for _, id := range reloadTreeIDs { + refreshProtyle(id) + } + + updateAttributeViewBlockText(updateNodes) + + sql.FlushQueue() + util.PushClearProgress() return } @@ -134,6 +150,9 @@ func RenameTag(oldLabel, newLabel string) (err error) { } } + var reloadTreeIDs []string + updateNodes := map[string]*ast.Node{} + for treeID, blocks := range treeBlocks { util.PushEndlessProgress("[" + treeID + "]") tree, e := LoadTreeByBlockID(treeID) @@ -173,6 +192,8 @@ func RenameTag(oldLabel, newLabel string) (err error) { } } } + + updateNodes[node.ID] = node } util.PushEndlessProgress(fmt.Sprintf(Conf.Language(111), util.EscapeHTML(tree.Root.IALAttr("title")))) if err = writeTreeUpsertQueue(tree); err != nil { @@ -180,9 +201,20 @@ func RenameTag(oldLabel, newLabel string) (err error) { return } util.RandomSleep(50, 150) + reloadTreeIDs = append(reloadTreeIDs, tree.ID) } - util.ReloadUI() + sql.FlushQueue() + + reloadTreeIDs = gulu.Str.RemoveDuplicatedElem(reloadTreeIDs) + for _, id := range reloadTreeIDs { + refreshProtyle(id) + } + + updateAttributeViewBlockText(updateNodes) + + sql.FlushQueue() + util.PushClearProgress() return }