mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
🎨 Improve rollback doc to avoid ID duplication https://github.com/siyuan-note/siyuan/issues/14358
This commit is contained in:
parent
d348ad0383
commit
6407791fbb
3 changed files with 25 additions and 16 deletions
|
@ -304,18 +304,7 @@ func RollbackDocHistory(boxID, historyPath string) (err error) {
|
|||
}
|
||||
}
|
||||
for _, nodeID := range duplicatedIDs {
|
||||
node := nodes[nodeID]
|
||||
node.ID = ast.NewNodeID()
|
||||
node.SetIALAttr("id", node.ID)
|
||||
created := util.TimeFromID(node.ID)
|
||||
updated := node.IALAttr("updated")
|
||||
if "" == updated {
|
||||
updated = created
|
||||
}
|
||||
if updated < created {
|
||||
updated = created
|
||||
}
|
||||
node.SetIALAttr("updated", updated)
|
||||
treenode.ResetNodeID(nodes[nodeID])
|
||||
}
|
||||
|
||||
// 仅重新索引该文档,不进行全量索引
|
||||
|
|
|
@ -204,8 +204,7 @@ func resetDuplicateBlocksOnFileSys() {
|
|||
|
||||
if "" == n.ID {
|
||||
needOverwrite = true
|
||||
n.ID = ast.NewNodeID()
|
||||
n.SetIALAttr("id", n.ID)
|
||||
treenode.ResetNodeID(n)
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
|
@ -225,8 +224,7 @@ func resetDuplicateBlocksOnFileSys() {
|
|||
|
||||
// 其他情况,重置节点 ID
|
||||
needOverwrite = true
|
||||
n.ID = ast.NewNodeID()
|
||||
n.SetIALAttr("id", n.ID)
|
||||
treenode.ResetNodeID(n)
|
||||
needRefreshUI = true
|
||||
return ast.WalkContinue
|
||||
})
|
||||
|
|
|
@ -34,6 +34,28 @@ import (
|
|||
"github.com/siyuan-note/siyuan/kernel/util"
|
||||
)
|
||||
|
||||
func ResetNodeID(node *ast.Node) {
|
||||
if nil == node {
|
||||
return
|
||||
}
|
||||
|
||||
node.ID = ast.NewNodeID()
|
||||
node.SetIALAttr("id", node.ID)
|
||||
resetUpdatedByID(node)
|
||||
}
|
||||
|
||||
func resetUpdatedByID(node *ast.Node) {
|
||||
created := util.TimeFromID(node.ID)
|
||||
updated := node.IALAttr("updated")
|
||||
if "" == updated {
|
||||
updated = created
|
||||
}
|
||||
if updated < created {
|
||||
updated = created
|
||||
}
|
||||
node.SetIALAttr("updated", updated)
|
||||
}
|
||||
|
||||
func GetEmbedBlockRef(embedNode *ast.Node) (blockRefID string) {
|
||||
if nil == embedNode || ast.NodeBlockQueryEmbed != embedNode.Type {
|
||||
return
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue