From ae4717710d6c583d40d0933a62fc3f5fb996ef98 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 7 Apr 2023 09:35:10 +0800 Subject: [PATCH 1/3] :art: When local.json is corrupted, clear the file to avoid being unable to enter the main interface Fix https://github.com/siyuan-note/siyuan/issues/7911 --- kernel/api/storage.go | 7 +------ kernel/model/storage.go | 17 +++++------------ 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/kernel/api/storage.go b/kernel/api/storage.go index 16eb3e20b..173361ab5 100644 --- a/kernel/api/storage.go +++ b/kernel/api/storage.go @@ -177,11 +177,6 @@ func getLocalStorage(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) - data, err := model.GetLocalStorage() - if nil != err { - ret.Code = -1 - ret.Msg = err.Error() - return - } + data := model.GetLocalStorage() ret.Data = data } diff --git a/kernel/model/storage.go b/kernel/model/storage.go index a1aef1d07..8b64412e3 100644 --- a/kernel/model/storage.go +++ b/kernel/model/storage.go @@ -293,11 +293,7 @@ func RemoveLocalStorageVals(keys []string) (err error) { localStorageLock.Lock() defer localStorageLock.Unlock() - localStorage, err := getLocalStorage() - if nil != err { - return - } - + localStorage := getLocalStorage() for _, key := range keys { delete(localStorage, key) } @@ -308,11 +304,7 @@ func SetLocalStorageVal(key string, val interface{}) (err error) { localStorageLock.Lock() defer localStorageLock.Unlock() - localStorage, err := getLocalStorage() - if nil != err { - return - } - + localStorage := getLocalStorage() localStorage[key] = val return setLocalStorage(localStorage) } @@ -323,7 +315,7 @@ func SetLocalStorage(val interface{}) (err error) { return setLocalStorage(val) } -func GetLocalStorage() (ret map[string]interface{}, err error) { +func GetLocalStorage() (ret map[string]interface{}) { localStorageLock.Lock() defer localStorageLock.Unlock() return getLocalStorage() @@ -355,7 +347,8 @@ func setLocalStorage(val interface{}) (err error) { return } -func getLocalStorage() (ret map[string]interface{}, err error) { +func getLocalStorage() (ret map[string]interface{}) { + // When local.json is corrupted, clear the file to avoid being unable to enter the main interface https://github.com/siyuan-note/siyuan/issues/7911 ret = map[string]interface{}{} lsPath := filepath.Join(util.DataDir, "storage/local.json") if !gulu.File.IsExist(lsPath) { From 193e50090dbad8dbd5a5c352c6094ba565b77510 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 7 Apr 2023 09:49:40 +0800 Subject: [PATCH 2/3] :art: Show heading block appearance style in the Outline Panel Fix https://github.com/siyuan-note/siyuan/issues/7872 --- kernel/model/render.go | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/kernel/model/render.go b/kernel/model/render.go index 1c9ccc3bd..41542f34c 100644 --- a/kernel/model/render.go +++ b/kernel/model/render.go @@ -33,19 +33,26 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) -func renderOutline(node *ast.Node, luteEngine *lute.Lute) (ret string) { - if nil == node { +func renderOutline(heading *ast.Node, luteEngine *lute.Lute) (ret string) { + if nil == heading { return "" } - if ast.NodeDocument == node.Type { - return node.IALAttr("title") + if ast.NodeDocument == heading.Type { + return heading.IALAttr("title") } buf := bytes.Buffer{} buf.Grow(4096) - ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus { + ast.Walk(heading, func(n *ast.Node, entering bool) ast.WalkStatus { if !entering { + switch n.Type { + case ast.NodeHeading: + // Show heading block appearance style in the Outline Panel https://github.com/siyuan-note/siyuan/issues/7872 + if style := n.IALAttr("style"); "" != style { + buf.WriteString("") + } + } return ast.WalkContinue } @@ -57,6 +64,13 @@ func renderOutline(node *ast.Node, luteEngine *lute.Lute) (ret string) { } switch n.Type { + case ast.NodeHeading: + // Show heading block appearance style in the Outline Panel https://github.com/siyuan-note/siyuan/issues/7872 + if style := n.IALAttr("style"); "" != style { + buf.WriteString("") + } case ast.NodeText, ast.NodeLinkText, ast.NodeCodeBlockCode, ast.NodeMathBlockContent: tokens := html.EscapeHTML(n.Tokens) tokens = bytes.ReplaceAll(tokens, []byte(" "), []byte(" ")) // 大纲面板条目中无法显示多个空格 https://github.com/siyuan-note/siyuan/issues/4370 From 5586adc93515c6cf037499917d2c8cf91fb7cd12 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 7 Apr 2023 10:32:52 +0800 Subject: [PATCH 3/3] :art: Show "What's New in SiYuan" after upgrading https://github.com/siyuan-note/siyuan/issues/7902 --- app/appearance/langs/en_US.json | 2 +- app/appearance/langs/es_ES.json | 2 +- app/appearance/langs/fr_FR.json | 2 +- app/appearance/langs/zh_CHT.json | 2 +- app/appearance/langs/zh_CN.json | 2 +- app/src/boot/openChangelog.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 9319d10f1..cc2a1fca6 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,5 +1,5 @@ { - "changelog": "Changelog", + "whatsNewInSiYuan": "What's New in SiYuan", "returnDesktop": "Press back again to desktop", "enterNew": "Enter to create", "enterNewTip": "No documents found, Enter to create a new document.", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 95386cc68..b1acfd552 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,5 +1,5 @@ { - "changelog": "Registro de cambios", + "whatsNewInSiYuan": "Novedades en SiYuan", "returnDesktop": "Presiona volver de nuevo al escritorio", "enterNew": "Ingresar para crear", "enterNewTip": "No se encontraron documentos, ingrese para crear un nuevo documento.", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index b39a9ba7d..8bcf8d991 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,5 +1,5 @@ { - "changelog": "Journal des modifications", + "whatsNewInSiYuan": "Quoi de neuf dans SiYuan", "returnDesktop": "Appuyez à nouveau sur le bureau", "enterNew": "Entrez pour créer", "enterNewTip": "Aucun document trouvé, entrez pour créer un nouveau document.", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 0c6b01884..d42b0bf64 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,5 +1,5 @@ { - "changelog": "變更日誌", + "whatsNewInSiYuan": "思源筆記最新變化", "returnDesktop": "再按一次返回桌面", "enterNew": "回車創建", "enterNewTip": "搜索結果為空,回車創建新文檔", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 016181a73..1cf76eea1 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,5 +1,5 @@ { - "changelog": "更新日志", + "whatsNewInSiYuan": "思源笔记最新变化", "returnDesktop": "再按一次返回桌面", "enterNew": "回车创建", "enterNewTip": "搜索结果为空,回车创建新文档", diff --git a/app/src/boot/openChangelog.ts b/app/src/boot/openChangelog.ts index 0a88c4a99..3fa4362d2 100644 --- a/app/src/boot/openChangelog.ts +++ b/app/src/boot/openChangelog.ts @@ -9,7 +9,7 @@ export const openChangelog = () => { return; } const dialog = new Dialog({ - title: `✨ ${window.siyuan.languages.changelog}`, + title: `✨ ${window.siyuan.languages.whatsNewInSiYuan}`, width: isMobile() ? "90vw" : "768px", content: `
${response.data.html}
` });