mirror of
https://github.com/siyuan-note/siyuan
synced 2026-04-21 13:37:52 +00:00
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
e9f92d2a06
commit
3b13cc420b
6 changed files with 57 additions and 57 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 ||
|
||||
|
|
|
|||
|
|
@ -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"`
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue