mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-21 07:46:09 +01:00
🎨 The plugin switch status is not synchronized https://github.com/siyuan-note/siyuan/issues/16155
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
f2191aad5f
commit
2815a744d5
3 changed files with 42 additions and 16 deletions
|
|
@ -1148,6 +1148,8 @@ func syncRepoDownload() (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
beforeSyncPetals := getPetals()
|
||||
|
||||
syncContext := map[string]interface{}{eventbus.CtxPushMsg: eventbus.CtxPushMsgToStatusBar}
|
||||
mergeResult, trafficStat, err := repo.SyncDownload(syncContext)
|
||||
elapsed := time.Since(start)
|
||||
|
|
@ -1178,6 +1180,7 @@ func syncRepoDownload() (err error) {
|
|||
autoSyncErrCount = 0
|
||||
BootSyncSucc = 0
|
||||
|
||||
calcPetalDiff(beforeSyncPetals, mergeResult)
|
||||
processSyncMergeResult(false, true, mergeResult, trafficStat, "d", elapsed)
|
||||
return
|
||||
}
|
||||
|
|
@ -1441,6 +1444,8 @@ func syncRepo(exit, byHand bool) (dataChanged bool, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
beforeSyncPetals := getPetals()
|
||||
|
||||
syncContext := map[string]interface{}{eventbus.CtxPushMsg: eventbus.CtxPushMsgToStatusBar}
|
||||
mergeResult, trafficStat, err := repo.Sync(syncContext)
|
||||
elapsed := time.Since(start)
|
||||
|
|
@ -1478,6 +1483,7 @@ func syncRepo(exit, byHand bool) (dataChanged bool, err error) {
|
|||
Conf.Save()
|
||||
autoSyncErrCount = 0
|
||||
|
||||
calcPetalDiff(beforeSyncPetals, mergeResult)
|
||||
processSyncMergeResult(exit, byHand, mergeResult, trafficStat, "a", elapsed)
|
||||
|
||||
if !exit {
|
||||
|
|
@ -1491,6 +1497,30 @@ func syncRepo(exit, byHand bool) (dataChanged bool, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func calcPetalDiff(beforeSyncPetals []*Petal, mergeResult *dejavu.MergeResult) {
|
||||
var upsertPetals, removePetals []string
|
||||
afterSyncPetals := getPetals()
|
||||
for _, afterSyncPetal := range afterSyncPetals {
|
||||
if beforeSyncPetal := getPetalByName(afterSyncPetal.Name, beforeSyncPetals); nil != beforeSyncPetal {
|
||||
a, _ := gulu.JSON.MarshalJSON(afterSyncPetal)
|
||||
b, _ := gulu.JSON.MarshalJSON(beforeSyncPetal)
|
||||
if !bytes.Equal(a, b) {
|
||||
upsertPetals = append(upsertPetals, afterSyncPetal.Name)
|
||||
}
|
||||
} else {
|
||||
upsertPetals = append(upsertPetals, afterSyncPetal.Name)
|
||||
}
|
||||
}
|
||||
for _, beforeSyncPetal := range beforeSyncPetals {
|
||||
if nil == getPetalByName(beforeSyncPetal.Name, afterSyncPetals) {
|
||||
removePetals = append(removePetals, beforeSyncPetal.Name)
|
||||
}
|
||||
}
|
||||
|
||||
mergeResult.UpsertPetals = gulu.Str.RemoveDuplicatedElem(upsertPetals)
|
||||
mergeResult.RemovePetals = gulu.Str.RemoveDuplicatedElem(removePetals)
|
||||
}
|
||||
|
||||
func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, trafficStat *dejavu.TrafficStat, mode string, elapsed time.Duration) {
|
||||
logging.LogInfof("synced data repo [device=%s, kernel=%s, provider=%d, mode=%s/%t, ufc=%d, dfc=%d, ucc=%d, dcc=%d, ub=%s, db=%s] in [%.2fs], merge result [conflicts=%d, upserts=%d, removes=%d]\n\n",
|
||||
Conf.System.ID, KernelID, Conf.Sync.Provider, mode, byHand,
|
||||
|
|
@ -1586,19 +1616,6 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult,
|
|||
if parts := strings.Split(file.Path, "/"); 3 < len(parts) {
|
||||
if pluginName := parts[3]; "petals.json" != pluginName {
|
||||
upsertPluginSet.Add(pluginName)
|
||||
} else {
|
||||
// 修改了 petals.json 则重新加载所有插件
|
||||
// The plugin switch status is not synchronized https://github.com/siyuan-note/siyuan/issues/16155
|
||||
entries, err := os.ReadDir(filepath.Join(util.DataDir, "plugins"))
|
||||
if nil != err {
|
||||
logging.LogErrorf("read plugins dir failed: %s", err)
|
||||
} else {
|
||||
for _, entry := range entries {
|
||||
if entry.IsDir() {
|
||||
upsertPluginSet.Add(entry.Name())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1655,6 +1672,15 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult,
|
|||
}
|
||||
}
|
||||
|
||||
for _, upsertPetal := range mergeResult.UpsertPetals {
|
||||
needReloadPlugin = true
|
||||
upsertPluginSet.Add(upsertPetal)
|
||||
}
|
||||
for _, removePetal := range mergeResult.RemovePetals {
|
||||
needReloadPlugin = true
|
||||
removePluginSet.Add(removePetal)
|
||||
}
|
||||
|
||||
if needReloadFlashcard {
|
||||
LoadFlashcards()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue