Bläddra i källkod

:art: Attribute View data synchronization https://github.com/siyuan-note/siyuan/issues/7552

Liang Ding 2 år sedan
förälder
incheckning
e8e645f02b
3 ändrade filer med 19 tillägg och 2 borttagningar
  1. 7 1
      kernel/api/av.go
  2. 3 1
      kernel/model/attribute_view.go
  3. 9 0
      kernel/model/repository.go

+ 7 - 1
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
 }

+ 3 - 1
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)

+ 9 - 0
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