mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 07:00:12 +01:00
🎨 The database-bound block is automatically added to the database after being copied as a replica https://github.com/siyuan-note/siyuan/issues/11959
This commit is contained in:
parent
74c6b9ba00
commit
9cc334698b
4 changed files with 23 additions and 6 deletions
|
|
@ -1093,9 +1093,24 @@ func DuplicateDoc(tree *parse.Tree) {
|
||||||
msgId := util.PushMsg(Conf.Language(116), 30000)
|
msgId := util.PushMsg(Conf.Language(116), 30000)
|
||||||
defer util.PushClearMsg(msgId)
|
defer util.PushClearMsg(msgId)
|
||||||
|
|
||||||
resetTree(tree, "Duplicated")
|
previousID := tree.Root.ID
|
||||||
|
resetTree(tree, "Duplicated", false)
|
||||||
createTreeTx(tree)
|
createTreeTx(tree)
|
||||||
WaitForWritingFiles()
|
WaitForWritingFiles()
|
||||||
|
|
||||||
|
// 复制为副本时将该副本块插入到数据库中 https://github.com/siyuan-note/siyuan/issues/11959
|
||||||
|
avs := tree.Root.IALAttr(av.NodeAttrNameAvs)
|
||||||
|
for _, avID := range strings.Split(avs, ",") {
|
||||||
|
if !ast.IsNodeIDPattern(avID) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
AddAttributeViewBlock(nil, []map[string]interface{}{{
|
||||||
|
"id": tree.Root.ID,
|
||||||
|
"isDetached": false,
|
||||||
|
}}, avID, "", previousID, false)
|
||||||
|
util.PushReloadAttrView(avID)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,7 @@ func recreateTree(tree *parse.Tree, absPath string) {
|
||||||
treenode.RemoveBlockTreesByPathPrefix(strings.TrimSuffix(tree.Path, ".sy"))
|
treenode.RemoveBlockTreesByPathPrefix(strings.TrimSuffix(tree.Path, ".sy"))
|
||||||
treenode.RemoveBlockTreesByRootID(tree.ID)
|
treenode.RemoveBlockTreesByRootID(tree.ID)
|
||||||
|
|
||||||
resetTree(tree, "")
|
resetTree(tree, "", true)
|
||||||
if err := filesys.WriteTree(tree); nil != err {
|
if err := filesys.WriteTree(tree); nil != err {
|
||||||
logging.LogWarnf("write tree [%s] failed: %s", tree.Path, err)
|
logging.LogWarnf("write tree [%s] failed: %s", tree.Path, err)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -1380,7 +1380,7 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult,
|
||||||
tree.Box = boxID
|
tree.Box = boxID
|
||||||
tree.Path = strings.TrimPrefix(file.Path, "/"+boxID)
|
tree.Path = strings.TrimPrefix(file.Path, "/"+boxID)
|
||||||
|
|
||||||
resetTree(tree, "Conflicted")
|
resetTree(tree, "Conflicted", true)
|
||||||
createTreeTx(tree)
|
createTreeTx(tree)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ import (
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
)
|
)
|
||||||
|
|
||||||
func resetTree(tree *parse.Tree, titleSuffix string) {
|
func resetTree(tree *parse.Tree, titleSuffix string, removeAvBinding bool) {
|
||||||
tree.ID = ast.NewNodeID()
|
tree.ID = ast.NewNodeID()
|
||||||
tree.Root.ID = tree.ID
|
tree.Root.ID = tree.ID
|
||||||
|
|
||||||
|
|
@ -121,8 +121,10 @@ func resetTree(tree *parse.Tree, titleSuffix string) {
|
||||||
return ast.WalkContinue
|
return ast.WalkContinue
|
||||||
})
|
})
|
||||||
|
|
||||||
// 清空文档绑定的数据库
|
if removeAvBinding {
|
||||||
tree.Root.RemoveIALAttr(av.NodeAttrNameAvs)
|
// 清空文档绑定的数据库
|
||||||
|
tree.Root.RemoveIALAttr(av.NodeAttrNameAvs)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func pagedPaths(localPath string, pageSize int) (ret map[int][]string) {
|
func pagedPaths(localPath string, pageSize int) (ret map[int][]string) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue