From d88731712d01d89d74be535e79c64d767d33d879 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 25 Apr 2024 19:14:35 +0800 Subject: [PATCH] :art: Refresh the doc tree after data sync generates conflicting documents https://github.com/siyuan-note/siyuan/issues/11137 --- kernel/model/repository.go | 7 +++++-- kernel/util/websocket.go | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/kernel/model/repository.go b/kernel/model/repository.go index 8497ad80b..53530a50e 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -1347,6 +1347,7 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, //logSyncMergeResult(mergeResult) + var needReloadFiletree bool if 0 < len(mergeResult.Conflicts) { luteEngine := util.NewLute() if Conf.Sync.GenerateConflictDoc { @@ -1375,6 +1376,8 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, resetTree(tree, "Conflicted") createTreeTx(tree) } + + needReloadFiletree = true } historyDir := filepath.Join(util.HistoryDir, mergeResult.Time.Format("2006-01-02-150405")+"-sync") @@ -1401,7 +1404,7 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, var upserts, removes []string var upsertTrees int // 可能需要重新加载部分功能 - var needReloadFlashcard, needReloadOcrTexts, needReloadFiletree, needReloadPlugin bool + var needReloadFlashcard, needReloadOcrTexts, needReloadPlugin bool for _, file := range mergeResult.Upserts { upserts = append(upserts, file.Path) if strings.HasPrefix(file.Path, "/storage/riff/") { @@ -1465,7 +1468,7 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, } if needReloadFiletree { - util.BroadcastByType("filetree", "reloadFiletree", 0, "", nil) + util.PushReloadFiletree() } if exit { // 退出时同步不用推送事件 diff --git a/kernel/util/websocket.go b/kernel/util/websocket.go index 2c8bcbf10..8f42342bd 100644 --- a/kernel/util/websocket.go +++ b/kernel/util/websocket.go @@ -158,6 +158,10 @@ func PushBackgroundTask(data map[string]interface{}) { BroadcastByType("main", "backgroundtask", 0, "", data) } +func PushReloadFiletree() { + BroadcastByType("filetree", "reloadFiletree", 0, "", nil) +} + type BlockStatResult struct { RuneCount int `json:"runeCount"` WordCount int `json:"wordCount"`