From db690c51b67127771ff691121d5999ae0921497a Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sat, 20 Jan 2024 21:55:20 +0800 Subject: [PATCH] :art: Plugins should be reloaded after the data sync https://github.com/siyuan-note/siyuan/issues/10203 --- kernel/model/repository.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/kernel/model/repository.go b/kernel/model/repository.go index 8f987d442..5b9d824c6 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -1374,14 +1374,15 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, // 有数据变更,需要重建索引 var upserts, removes []string var upsertTrees int - var needReloadFlashcard, needReloadOcrTexts, needReloadFiletree bool + // 可能需要重新加载部分功能 + var needReloadFlashcard, needReloadOcrTexts, needReloadFiletree, needReloadPlugin bool for _, file := range mergeResult.Upserts { upserts = append(upserts, file.Path) if strings.HasPrefix(file.Path, "/storage/riff/") { needReloadFlashcard = true } - if strings.HasPrefix(file.Path, "/data/assets/ocr-texts.json") { + if strings.HasPrefix(file.Path, "/assets/ocr-texts.json") { needReloadOcrTexts = true } @@ -1389,6 +1390,10 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, needReloadFiletree = true } + if strings.HasPrefix(file.Path, "/storage/petal/") { + needReloadPlugin = true + } + if strings.HasSuffix(file.Path, ".sy") { upsertTrees++ } @@ -1399,13 +1404,17 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, needReloadFlashcard = true } - if strings.HasPrefix(file.Path, "/data/assets/ocr-texts.json") { + if strings.HasPrefix(file.Path, "/assets/ocr-texts.json") { needReloadOcrTexts = true } if strings.HasSuffix(file.Path, "/.siyuan/conf.json") { needReloadFiletree = true } + + if strings.HasPrefix(file.Path, "/storage/petal/") { + needReloadPlugin = true + } } if needReloadFlashcard { @@ -1416,6 +1425,10 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, LoadAssetsTexts() } + if needReloadPlugin { + pushReloadPlugin() + } + syncingFiles = sync.Map{} syncingStorages.Store(false) @@ -1951,3 +1964,7 @@ func getCloudSpace() (stat *cloud.Stat, err error) { } return } + +func pushReloadPlugin() { + util.BroadcastByType("main", "reloadPlugin", 0, "", nil) +}