Browse Source

:bug: Block attributes are not refreshed after data syncing https://github.com/siyuan-note/siyuan/issues/11343

Daniel 1 year ago
parent
commit
0f915df236
4 changed files with 21 additions and 2 deletions
  1. 4 0
      kernel/cache/ial.go
  2. 3 0
      kernel/model/box.go
  3. 0 2
      kernel/model/repository.go
  4. 14 0
      kernel/model/sync.go

+ 4 - 0
kernel/cache/ial.go

@@ -75,3 +75,7 @@ func GetBlockIAL(id string) (ret map[string]string) {
 func RemoveBlockIAL(id string) {
 	blockIALCache.Del(id)
 }
+
+func ClearBlocksIAL() {
+	blockIALCache.Clear()
+}

+ 3 - 0
kernel/model/box.go

@@ -36,6 +36,7 @@ import (
 	"github.com/facette/natsort"
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/logging"
+	"github.com/siyuan-note/siyuan/kernel/cache"
 	"github.com/siyuan-note/siyuan/kernel/conf"
 	"github.com/siyuan-note/siyuan/kernel/filesys"
 	"github.com/siyuan-note/siyuan/kernel/sql"
@@ -503,6 +504,8 @@ func FullReindex() {
 	task.AppendTask(task.DatabaseIndexFull, fullReindex)
 	task.AppendTask(task.DatabaseIndexRef, IndexRefs)
 	task.AppendTaskWithTimeout(task.DatabaseIndexEmbedBlock, 30*time.Second, autoIndexEmbedBlock)
+	cache.ClearDocsIAL()
+	cache.ClearBlocksIAL()
 	task.AppendTask(task.ReloadUI, util.ReloadUI)
 }
 

+ 0 - 2
kernel/model/repository.go

@@ -49,7 +49,6 @@ import (
 	"github.com/siyuan-note/eventbus"
 	"github.com/siyuan-note/httpclient"
 	"github.com/siyuan-note/logging"
-	"github.com/siyuan-note/siyuan/kernel/cache"
 	"github.com/siyuan-note/siyuan/kernel/conf"
 	"github.com/siyuan-note/siyuan/kernel/filesys"
 	"github.com/siyuan-note/siyuan/kernel/task"
@@ -1475,7 +1474,6 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult,
 	syncingFiles = sync.Map{}
 	syncingStorages.Store(false)
 
-	cache.ClearDocsIAL()              // 同步后文档树文档图标没有更新 https://github.com/siyuan-note/siyuan/issues/4939
 	if needFullReindex(upsertTrees) { // 改进同步后全量重建索引判断 https://github.com/siyuan-note/siyuan/issues/5764
 		FullReindex()
 		return

+ 14 - 0
kernel/model/sync.go

@@ -36,6 +36,7 @@ import (
 	"github.com/siyuan-note/dejavu"
 	"github.com/siyuan-note/dejavu/cloud"
 	"github.com/siyuan-note/logging"
+	"github.com/siyuan-note/siyuan/kernel/cache"
 	"github.com/siyuan-note/siyuan/kernel/conf"
 	"github.com/siyuan-note/siyuan/kernel/filesys"
 	"github.com/siyuan-note/siyuan/kernel/sql"
@@ -306,6 +307,12 @@ func removeIndexes(removeFilePaths []string) (removeRootIDs []string) {
 			util.IncBootProgress(bootProgressPart, msg)
 			util.PushStatusBar(msg)
 
+			bts := treenode.GetBlockTreesByRootID(block.RootID)
+			for _, b := range bts {
+				cache.RemoveBlockIAL(b.ID)
+			}
+			cache.RemoveDocIAL(block.Path)
+
 			treenode.RemoveBlockTreesByRootID(block.RootID)
 			sql.RemoveTreeQueue(block.RootID)
 		}
@@ -347,6 +354,13 @@ func upsertIndexes(upsertFilePaths []string) (upsertRootIDs []string) {
 		}
 		treenode.IndexBlockTree(tree)
 		sql.UpsertTreeQueue(tree)
+
+		bts := treenode.GetBlockTreesByRootID(tree.ID)
+		for _, b := range bts {
+			cache.RemoveBlockIAL(b.ID)
+		}
+		cache.RemoveDocIAL(tree.Path)
+
 		upsertRootIDs = append(upsertRootIDs, tree.Root.ID)
 	}