From e8e645f02ba3d5183f9f961918edb3757d510adb Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 2 Apr 2023 11:42:04 +0800 Subject: [PATCH] :art: Attribute View data synchronization https://github.com/siyuan-note/siyuan/issues/7552 --- kernel/api/av.go | 8 +++++++- kernel/model/attribute_view.go | 4 +++- kernel/model/repository.go | 9 +++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/kernel/api/av.go b/kernel/api/av.go index 59f51c965..3cc952761 100644 --- a/kernel/api/av.go +++ b/kernel/api/av.go @@ -35,5 +35,11 @@ func renderAttributeView(c *gin.Context) { } id := arg["id"].(string) - ret.Data = model.RenderAttributeView(id) + data, err := model.RenderAttributeView(id) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } + ret.Data = data } diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 49c586bf8..4aa1ede17 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -28,7 +28,9 @@ import ( "github.com/siyuan-note/siyuan/kernel/treenode" ) -func RenderAttributeView(avID string) (dom string) { +func RenderAttributeView(avID string) (dom string, err error) { + waitForSyncingStorages() + attrView, err := av.ParseAttributeView(avID) if nil != err { logging.LogErrorf("parse attribute view [%s] failed: %s", avID, err) diff --git a/kernel/model/repository.go b/kernel/model/repository.go index 2bcc98e49..03d21b8ef 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -771,6 +771,15 @@ func IndexRepo(memo string) (err error) { var syncingFiles = sync.Map{} var syncingStorages = false +func waitForSyncingStorages() { + for i := 0; i < 30; i++ { + if syncingStorages { + return + } + time.Sleep(time.Second) + } +} + func IsSyncingFile(rootID string) (ret bool) { _, ret = syncingFiles.Load(rootID) return