mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-02-06 15:41:48 +01:00
♻️ Implement some delayed kernel events using task queues https://github.com/siyuan-note/siyuan/issues/12393
This commit is contained in:
parent
e55c12037a
commit
9560277d0c
7 changed files with 105 additions and 65 deletions
|
|
@ -19,6 +19,7 @@ package model
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/siyuan-note/siyuan/kernel/task"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"slices"
|
||||
|
|
@ -92,7 +93,7 @@ func AppendAttributeViewDetachedBlocksWithValues(avID string, blocksValues [][]*
|
|||
return
|
||||
}
|
||||
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -1044,7 +1045,7 @@ func unbindAttributeViewBlock(operation *Operation, tx *Transaction) (err error)
|
|||
|
||||
changedAvIDs = gulu.Str.RemoveDuplicatedElem(changedAvIDs)
|
||||
for _, avID := range changedAvIDs {
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -1313,7 +1314,7 @@ func updateAttributeViewColRelation(operation *Operation) (err error) {
|
|||
}
|
||||
if !isSameAv {
|
||||
err = av.SaveAttributeView(destAv)
|
||||
util.PushReloadAttrView(destAv.ID)
|
||||
ReloadAttrView(destAv.ID)
|
||||
}
|
||||
|
||||
av.UpsertAvBackRel(srcAv.ID, destAv.ID)
|
||||
|
|
@ -2147,7 +2148,7 @@ func removeAttributeViewBlock(srcIDs []string, avID string, tx *Transaction) (er
|
|||
|
||||
relatedAvIDs := av.GetSrcAvIDs(avID)
|
||||
for _, relatedAvID := range relatedAvIDs {
|
||||
util.PushReloadAttrView(relatedAvID)
|
||||
ReloadAttrView(relatedAvID)
|
||||
}
|
||||
|
||||
err = av.SaveAttributeView(attrView)
|
||||
|
|
@ -2804,7 +2805,7 @@ func RemoveAttributeViewKey(avID, keyID string) (err error) {
|
|||
|
||||
if destAv != attrView {
|
||||
av.SaveAttributeView(destAv)
|
||||
util.PushReloadAttrView(destAv.ID)
|
||||
ReloadAttrView(destAv.ID)
|
||||
}
|
||||
|
||||
if !destAvRelSrcAv {
|
||||
|
|
@ -2940,7 +2941,7 @@ func replaceAttributeViewBlock(operation *Operation, tx *Transaction) (err error
|
|||
|
||||
changedAvIDs = gulu.Str.RemoveDuplicatedElem(changedAvIDs)
|
||||
for _, avID := range changedAvIDs {
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -3182,7 +3183,7 @@ func UpdateAttributeViewCell(tx *Transaction, avID, keyID, rowID, cellID string,
|
|||
|
||||
relatedAvIDs := av.GetSrcAvIDs(avID)
|
||||
for _, relatedAvID := range relatedAvIDs {
|
||||
util.PushReloadAttrView(relatedAvID)
|
||||
ReloadAttrView(relatedAvID)
|
||||
}
|
||||
|
||||
if err = av.SaveAttributeView(attrView); err != nil {
|
||||
|
|
@ -3579,3 +3580,12 @@ func updateBoundBlockAvsAttribute(avIDs []string) {
|
|||
av.BatchUpsertBlockRel(avNodes)
|
||||
}
|
||||
}
|
||||
|
||||
func ReloadAttrView(avID string) {
|
||||
task.AppendTaskWithDelay(task.ReloadAttributeView, 200*time.Millisecond, pushReloadAttrView, avID)
|
||||
|
||||
}
|
||||
|
||||
func pushReloadAttrView(avID string) {
|
||||
util.BroadcastByType("protyle", "refreshAttributeView", 0, "", map[string]interface{}{"id": avID})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1113,7 +1113,7 @@ func DuplicateDoc(tree *parse.Tree) {
|
|||
"id": n.ID,
|
||||
"isDetached": false,
|
||||
}}, avID, "", "", false)
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
}
|
||||
return ast.WalkContinue
|
||||
})
|
||||
|
|
|
|||
|
|
@ -312,7 +312,7 @@ func RollbackDocHistory(boxID, historyPath string) (err error) {
|
|||
|
||||
// 刷新属性视图
|
||||
for _, avID := range avIDs {
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -813,7 +813,7 @@ func syncDelete2AvBlock(node *ast.Node) {
|
|||
go func() {
|
||||
time.Sleep(256 * time.Millisecond)
|
||||
for _, avID := range changedAvIDs {
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
|
@ -1074,7 +1074,7 @@ func (tx *Transaction) doInsert(operation *Operation) (ret *TxErr) {
|
|||
"id": insertedNode.ID,
|
||||
"isDetached": false,
|
||||
}}, avID, "", previousID, false)
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
}
|
||||
|
||||
operation.ID = insertedNode.ID
|
||||
|
|
@ -1187,7 +1187,7 @@ func upsertAvBlockRel(node *ast.Node) {
|
|||
})
|
||||
avIDs = gulu.Str.RemoveDuplicatedElem(avIDs)
|
||||
for _, avID := range avIDs {
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1533,7 +1533,7 @@ func refreshDynamicRefTexts(updatedDefNodes map[string]*ast.Node, updatedTrees m
|
|||
}
|
||||
if changedAv {
|
||||
av.SaveAttributeView(attrView)
|
||||
util.PushReloadAttrView(avID)
|
||||
ReloadAttrView(avID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue