Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2026-04-18 17:31:56 +08:00
parent e9f92d2a06
commit 3b13cc420b
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
6 changed files with 57 additions and 57 deletions

View file

@ -73,7 +73,7 @@ func buildUpdatedTaskListItemBlockDOM(id, marker string, luteEngine *lute.Lute)
markerNode.TaskListItemMarker = liMarker
markerNode.TaskListItemChecked = ' ' != markerNode.TaskListItemMarker
li.SetIALAttr("updated", util.CurrentTimeSecondsStr())
treenode.RefreshUpdated(li)
return luteEngine.RenderNodeBlockDOM(li), nil
}

View file

@ -507,8 +507,8 @@ func SwapBlockRef(refID, defID string, includeChildren bool) (err error) {
}
}
refreshUpdated(defNode)
refreshUpdated(refNode)
treenode.RefreshUpdated(defNode)
treenode.RefreshUpdated(refNode)
refPivot := treenode.NewParagraph("")
refNode.InsertBefore(refPivot)

View file

@ -1087,7 +1087,7 @@ func replaceTextNode(text *ast.Node, method int, keyword string, replacement str
text.InsertBefore(rNode)
}
block := treenode.ParentBlock(text)
refreshUpdated(block)
treenode.RefreshUpdated(block)
return true
}
} else if 3 == method {
@ -1107,7 +1107,7 @@ func replaceTextNode(text *ast.Node, method int, keyword string, replacement str
text.InsertBefore(rNode)
}
block := treenode.ParentBlock(text)
refreshUpdated(block)
treenode.RefreshUpdated(block)
return true
}
}

View file

@ -374,7 +374,7 @@ func RenderTemplate(p, id string, preview bool) (tree *parse.Tree, dom string, e
n.RemoveIALAttr(av.NodeAttrNameAvs)
// Blocks created via template update time earlier than creation time https://github.com/siyuan-note/siyuan/issues/8607
refreshUpdated(n)
treenode.RefreshUpdated(n)
}
if (ast.NodeListItem == n.Type && (nil == n.FirstChild ||

View file

@ -526,9 +526,9 @@ func (tx *Transaction) doMove(operation *Operation) (ret *TxErr) {
srcEmptyList.Unlink()
}
refreshUpdated(srcNode)
treenode.RefreshUpdated(srcNode)
tx.nodes[srcNode.ID] = srcNode
refreshUpdated(srcTree.Root)
treenode.RefreshUpdated(srcTree.Root)
tx.writeTree(srcTree)
if !isSameTree {
tx.writeTree(targetTree)
@ -607,9 +607,9 @@ func (tx *Transaction) doMove(operation *Operation) (ret *TxErr) {
}
}
refreshUpdated(srcNode)
treenode.RefreshUpdated(srcNode)
tx.nodes[srcNode.ID] = srcNode
refreshUpdated(srcTree.Root)
treenode.RefreshUpdated(srcTree.Root)
tx.writeTree(srcTree)
if !isSameTree {
tx.writeTree(targetTree)
@ -715,11 +715,11 @@ func (tx *Transaction) doPrependInsert(operation *Operation) (ret *TxErr) {
node.InsertAfter(toInsert)
}
createdUpdated(toInsert)
treenode.CreatedUpdated(toInsert)
tx.nodes[toInsert.ID] = toInsert
}
createdUpdated(insertedNode)
treenode.CreatedUpdated(insertedNode)
tx.nodes[insertedNode.ID] = insertedNode
tx.writeTree(tree)
@ -822,11 +822,11 @@ func (tx *Transaction) doAppendInsert(operation *Operation) (ret *TxErr) {
}
}
createdUpdated(toInsert)
treenode.CreatedUpdated(toInsert)
tx.nodes[toInsert.ID] = toInsert
}
createdUpdated(insertedNode)
treenode.CreatedUpdated(insertedNode)
tx.nodes[insertedNode.ID] = insertedNode
tx.writeTree(tree)
@ -1313,7 +1313,7 @@ func (tx *Transaction) doInsert0(operation *Operation, tree *parse.Tree) (ret *T
}
}
createdUpdated(insertedNode)
treenode.CreatedUpdated(insertedNode)
tx.nodes[insertedNode.ID] = insertedNode
// 收集引用的定义块 ID
@ -1565,7 +1565,7 @@ func (tx *Transaction) doUpdate(operation *Operation) (ret *TxErr) {
}()
}
createdUpdated(updatedNode)
treenode.CreatedUpdated(updatedNode)
tx.nodes[updatedNode.ID] = updatedNode
tx.writeTree(tree)
@ -1735,7 +1735,7 @@ func (tx *Transaction) doUpdateUpdated(operation *Operation) (ret *TxErr) {
}
node.SetIALAttr("updated", operation.Data.(string))
createdUpdated(node)
treenode.CreatedUpdated(node)
tx.nodes[node.ID] = node
tx.writeTree(tree)
return
@ -1777,46 +1777,6 @@ func (tx *Transaction) doSetAttrs(operation *Operation) (ret *TxErr) {
return
}
func refreshUpdated(node *ast.Node) {
updated := util.CurrentTimeSecondsStr()
node.SetIALAttr("updated", updated)
parents := treenode.ParentNodesWithHeadings(node)
for _, parent := range parents { // 更新所有父节点的更新时间字段
parent.SetIALAttr("updated", updated)
}
}
func createdUpdated(node *ast.Node) {
// 补全子节点的更新时间 Improve block update time filling https://github.com/siyuan-note/siyuan/issues/12182
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
if !entering || !n.IsBlock() || ast.NodeKramdownBlockIAL == n.Type {
return ast.WalkContinue
}
updated := n.IALAttr("updated")
if "" == updated && ast.IsNodeIDPattern(n.ID) {
created := util.TimeFromID(n.ID)
n.SetIALAttr("updated", created)
}
return ast.WalkContinue
})
created := util.TimeFromID(node.ID)
updated := node.IALAttr("updated")
if !util.IsTimeStr(updated) {
updated = created
node.SetIALAttr("updated", updated)
}
if updated < created {
updated = created
}
parents := treenode.ParentNodesWithHeadings(node)
for _, parent := range parents { // 更新所有父节点的更新时间字段
parent.SetIALAttr("updated", updated)
cache.PutBlockIAL(parent.ID, parse.IAL2Map(parent.KramdownIAL))
}
}
type Operation struct {
Action string `json:"action"`
Data any `json:"data"`

View file

@ -486,3 +486,43 @@ func IsChartCodeBlockCode(code *ast.Node) bool {
language = strings.ReplaceAll(language, editor.Caret, "")
return render.NoHighlight(language)
}
func RefreshUpdated(node *ast.Node) {
updated := util.CurrentTimeSecondsStr()
node.SetIALAttr("updated", updated)
parents := ParentNodesWithHeadings(node)
for _, parent := range parents { // 更新所有父节点的更新时间字段
parent.SetIALAttr("updated", updated)
}
}
func CreatedUpdated(node *ast.Node) {
// 补全子节点的更新时间 Improve block update time filling https://github.com/siyuan-note/siyuan/issues/12182
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
if !entering || !n.IsBlock() || ast.NodeKramdownBlockIAL == n.Type {
return ast.WalkContinue
}
updated := n.IALAttr("updated")
if "" == updated && ast.IsNodeIDPattern(n.ID) {
created := util.TimeFromID(n.ID)
n.SetIALAttr("updated", created)
}
return ast.WalkContinue
})
created := util.TimeFromID(node.ID)
updated := node.IALAttr("updated")
if !util.IsTimeStr(updated) {
updated = created
node.SetIALAttr("updated", updated)
}
if updated < created {
updated = created
}
parents := ParentNodesWithHeadings(node)
for _, parent := range parents { // 更新所有父节点的更新时间字段
parent.SetIALAttr("updated", updated)
cache.PutBlockIAL(parent.ID, parse.IAL2Map(parent.KramdownIAL))
}
}