diff --git a/kernel/api/router.go b/kernel/api/router.go index fe82071cc..1c64a7601 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -135,6 +135,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/search/searchTag", model.CheckAuth, searchTag) ginServer.Handle("POST", "/api/search/searchTemplate", model.CheckAuth, searchTemplate) + ginServer.Handle("POST", "/api/search/removeTemplate", model.CheckAuth, removeTemplate) ginServer.Handle("POST", "/api/search/searchWidget", model.CheckAuth, searchWidget) ginServer.Handle("POST", "/api/search/searchRefBlock", model.CheckAuth, searchRefBlock) ginServer.Handle("POST", "/api/search/searchEmbedBlock", model.CheckAuth, searchEmbedBlock) diff --git a/kernel/api/search.go b/kernel/api/search.go index 6fdaeedc6..31a5877c7 100644 --- a/kernel/api/search.go +++ b/kernel/api/search.go @@ -108,6 +108,24 @@ func searchWidget(c *gin.Context) { } } +func removeTemplate(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + path := arg["path"].(string) + err := model.RemoveTemplate(path) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } +} + func searchTemplate(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/model/storage.go b/kernel/model/storage.go index 9371c9f8e..f9c16ad0c 100644 --- a/kernel/model/storage.go +++ b/kernel/model/storage.go @@ -182,6 +182,7 @@ type CriterionTypes struct { ListItem bool `json:"listItem"` CodeBlock bool `json:"codeBlock"` HtmlBlock bool `json:"htmlBlock"` + EmbedBlock bool `json:"embedBlock"` } var criteriaLock = sync.Mutex{} diff --git a/kernel/model/template.go b/kernel/model/template.go index 73d546d55..fb3d348b1 100644 --- a/kernel/model/template.go +++ b/kernel/model/template.go @@ -34,6 +34,7 @@ import ( "github.com/88250/lute/render" sprig "github.com/Masterminds/sprig/v3" "github.com/araddon/dateparse" + "github.com/siyuan-note/filelock" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/search" "github.com/siyuan-note/siyuan/kernel/sql" @@ -57,6 +58,14 @@ func RenderGoTemplate(templateContent string) (ret string, err error) { return } +func RemoveTemplate(p string) (err error) { + err = filelock.Remove(p) + if nil != err { + logging.LogErrorf("remove template failed: %s", err) + } + return +} + func SearchTemplate(keyword string) (ret []*Block) { ret = []*Block{} @@ -145,7 +154,7 @@ func DocSaveAsTemplate(id string, overwrite bool) (code int, err error) { } } - err = os.WriteFile(savePath, md, 0644) + err = filelock.WriteFile(savePath, md) return } diff --git a/kernel/util/net.go b/kernel/util/net.go index 6a6ca030a..377e01442 100644 --- a/kernel/util/net.go +++ b/kernel/util/net.go @@ -42,7 +42,7 @@ func IsOnline() (ret bool) { ret = nil == err && nil != resp && nil != resp.Response if !ret { - logging.LogWarnf("network is offline") + logging.LogWarnf("network is offline: %v", err) } return } diff --git a/kernel/util/os_mobile.go b/kernel/util/os_mobile.go index 41a1d5b3f..439b8f69a 100644 --- a/kernel/util/os_mobile.go +++ b/kernel/util/os_mobile.go @@ -20,10 +20,10 @@ package util func GetOSPlatform() (plat, ver string) { if ContainerIOS == Container { - return "iOS", MobileOSVer + return "iOS " + MobileOSVer } if ContainerAndroid == Container { - return "Android", MobileOSVer + return "Android " + MobileOSVer } - return "Unknown", MobileOSVer + return "Unknown " + MobileOSVer } diff --git a/kernel/util/working.go b/kernel/util/working.go index e7c0656dc..691b7a806 100644 --- a/kernel/util/working.go +++ b/kernel/util/working.go @@ -35,6 +35,7 @@ import ( "github.com/88250/gulu" figure "github.com/common-nighthawk/go-figure" "github.com/gofrs/flock" + "github.com/siyuan-note/filelock" "github.com/siyuan-note/httpclient" "github.com/siyuan-note/logging" ) @@ -295,7 +296,7 @@ func WriteWorkspacePaths(workspacePaths []string) (err error) { return } - if err = os.WriteFile(workspaceConf, data, 0644); nil != err { + if err = filelock.WriteFile(workspaceConf, data); nil != err { msg := fmt.Sprintf("write workspace conf [%s] failed: %s", workspaceConf, err) logging.LogErrorf(msg) err = errors.New(msg)