From 6d8319b13f7201595ef9d4fd8de3030b053da937 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 15 Sep 2024 11:23:37 +0800 Subject: [PATCH 1/4] :art: Refresh result list after find-replace https://github.com/siyuan-note/siyuan/issues/12437 --- kernel/model/search.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/model/search.go b/kernel/model/search.go index cb8fcb1d2..a7f7a0f03 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -798,6 +798,7 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids refreshProtyle(id) } + sql.WaitForWritingDatabase() util.PushClearProgress() return } From 7e19a77ccbc8d31ac00e421e0b8a6efe17058034 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 15 Sep 2024 11:32:04 +0800 Subject: [PATCH 2/4] :art: Improve database exporting for asset field https://github.com/siyuan-note/siyuan/issues/12484 --- kernel/model/export.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/kernel/model/export.go b/kernel/model/export.go index 5a1b8138e..5048ccb30 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -2341,7 +2341,7 @@ func exportTree(tree *parse.Tree, wysiwyg, keepFold, avHiddenCol bool, } } else if av.KeyTypeMAsset == cell.Value.Type { if nil != cell.Value.MAsset { - for _, a := range cell.Value.MAsset { + for i, a := range cell.Value.MAsset { if av.AssetTypeImage == a.Type { img := &ast.Node{Type: ast.NodeImage} img.AppendChild(&ast.Node{Type: ast.NodeBang}) @@ -2355,13 +2355,20 @@ func exportTree(tree *parse.Tree, wysiwyg, keepFold, avHiddenCol bool, } else if av.AssetTypeFile == a.Type { file := &ast.Node{Type: ast.NodeLink} file.AppendChild(&ast.Node{Type: ast.NodeOpenBracket}) - file.AppendChild(&ast.Node{Type: ast.NodeLinkText, Tokens: []byte(a.Name)}) + linkText := strings.TrimSpace(a.Name) + if "" == linkText { + linkText = a.Content + } + file.AppendChild(&ast.Node{Type: ast.NodeLinkText, Tokens: []byte(linkText)}) file.AppendChild(&ast.Node{Type: ast.NodeCloseBracket}) file.AppendChild(&ast.Node{Type: ast.NodeOpenParen}) file.AppendChild(&ast.Node{Type: ast.NodeLinkDest, Tokens: []byte(a.Content)}) file.AppendChild(&ast.Node{Type: ast.NodeCloseParen}) mdTableCell.AppendChild(file) } + if i < len(cell.Value.MAsset)-1 { + mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(" ")}) + } } continue } From 53d54237705e94890fc800eee7c5272ecbc2eed8 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 15 Sep 2024 11:46:35 +0800 Subject: [PATCH 3/4] :art: Improve database exporting for asset field https://github.com/siyuan-note/siyuan/issues/12484 --- kernel/model/export.go | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/kernel/model/export.go b/kernel/model/export.go index 5048ccb30..67be1bfa8 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -2339,6 +2339,20 @@ func exportTree(tree *parse.Tree, wysiwyg, keepFold, avHiddenCol bool, if nil != cell.Value.Updated { cell.Value.Updated = av.NewFormattedValueUpdated(cell.Value.Updated.Content, 0, av.UpdatedFormatNone) } + } else if av.KeyTypeURL == cell.Value.Type { + if nil != cell.Value.URL { + if "" != strings.TrimSpace(cell.Value.URL.Content) { + link := &ast.Node{Type: ast.NodeLink} + link.AppendChild(&ast.Node{Type: ast.NodeOpenBracket}) + link.AppendChild(&ast.Node{Type: ast.NodeLinkText, Tokens: []byte(cell.Value.URL.Content)}) + link.AppendChild(&ast.Node{Type: ast.NodeCloseBracket}) + link.AppendChild(&ast.Node{Type: ast.NodeOpenParen}) + link.AppendChild(&ast.Node{Type: ast.NodeLinkDest, Tokens: []byte(cell.Value.URL.Content)}) + link.AppendChild(&ast.Node{Type: ast.NodeCloseParen}) + mdTableCell.AppendChild(link) + } + continue + } } else if av.KeyTypeMAsset == cell.Value.Type { if nil != cell.Value.MAsset { for i, a := range cell.Value.MAsset { @@ -2353,18 +2367,23 @@ func exportTree(tree *parse.Tree, wysiwyg, keepFold, avHiddenCol bool, img.AppendChild(&ast.Node{Type: ast.NodeCloseParen}) mdTableCell.AppendChild(img) } else if av.AssetTypeFile == a.Type { - file := &ast.Node{Type: ast.NodeLink} - file.AppendChild(&ast.Node{Type: ast.NodeOpenBracket}) linkText := strings.TrimSpace(a.Name) if "" == linkText { linkText = a.Content } - file.AppendChild(&ast.Node{Type: ast.NodeLinkText, Tokens: []byte(linkText)}) - file.AppendChild(&ast.Node{Type: ast.NodeCloseBracket}) - file.AppendChild(&ast.Node{Type: ast.NodeOpenParen}) - file.AppendChild(&ast.Node{Type: ast.NodeLinkDest, Tokens: []byte(a.Content)}) - file.AppendChild(&ast.Node{Type: ast.NodeCloseParen}) - mdTableCell.AppendChild(file) + + if "" != strings.TrimSpace(a.Content) { + file := &ast.Node{Type: ast.NodeLink} + file.AppendChild(&ast.Node{Type: ast.NodeOpenBracket}) + file.AppendChild(&ast.Node{Type: ast.NodeLinkText, Tokens: []byte(linkText)}) + file.AppendChild(&ast.Node{Type: ast.NodeCloseBracket}) + file.AppendChild(&ast.Node{Type: ast.NodeOpenParen}) + file.AppendChild(&ast.Node{Type: ast.NodeLinkDest, Tokens: []byte(a.Content)}) + file.AppendChild(&ast.Node{Type: ast.NodeCloseParen}) + mdTableCell.AppendChild(file) + } else { + mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(linkText)}) + } } if i < len(cell.Value.MAsset)-1 { mdTableCell.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(" ")}) From fef2f429f7476ea200315c85588342918a298a7d Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 15 Sep 2024 16:48:35 +0800 Subject: [PATCH 4/4] :art: Automatically refresh reference counts after adding or removing embed blocks https://github.com/siyuan-note/siyuan/issues/12480 --- kernel/model/transaction.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 6e93797f5..b80f39958 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -763,7 +763,6 @@ func (tx *Transaction) doDelete(operation *Operation) (ret *TxErr) { // 收集引用的定义块 ID refDefIDs := getRefDefIDs(node) // 推送定义节点引用计数 - refDefIDs = gulu.Str.RemoveDuplicatedElem(refDefIDs) for _, defID := range refDefIDs { defTree, _ := LoadTreeByBlockID(defID) if nil != defTree { @@ -1082,7 +1081,6 @@ func (tx *Transaction) doInsert(operation *Operation) (ret *TxErr) { // 收集引用的定义块 ID refDefIDs := getRefDefIDs(insertedNode) // 推送定义节点引用计数 - refDefIDs = gulu.Str.RemoveDuplicatedElem(refDefIDs) for _, defID := range refDefIDs { defTree, _ := LoadTreeByBlockID(defID) if nil != defTree { @@ -1233,9 +1231,13 @@ func getRefDefIDs(node *ast.Node) (refDefIDs []string) { if treenode.IsBlockRef(n) { refDefIDs = append(refDefIDs, n.TextMarkBlockRefID) + } else if treenode.IsEmbedBlockRef(n) { + defID := treenode.GetEmbedBlockRef(n) + refDefIDs = append(refDefIDs, defID) } return ast.WalkContinue }) + refDefIDs = gulu.Str.RemoveDuplicatedElem(refDefIDs) return }