From eaf29d918a2f7c4d0152808358e6277824089843 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 12 Jun 2023 21:38:15 +0800 Subject: [PATCH] :art: Data sync supports the multi-kernel online perception https://github.com/siyuan-note/siyuan/issues/8518 --- kernel/model/repository.go | 6 +++++- kernel/model/sync.go | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/kernel/model/repository.go b/kernel/model/repository.go index bec179340..7c53af141 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -1102,7 +1102,7 @@ func bootSyncRepo() (err error) { return } -func syncRepo(exit, byHand bool) (mergeResult *dejavu.MergeResult, err error) { +func syncRepo(exit, byHand bool) (dataChanged bool, err error) { if 1 > len(Conf.Repo.Key) { autoSyncErrCount++ planSyncAfter(fixSyncInterval) @@ -1126,6 +1126,7 @@ func syncRepo(exit, byHand bool) (mergeResult *dejavu.MergeResult, err error) { return } + latest, _ := repo.Latest() start := time.Now() err = indexRepoBeforeCloudSync(repo) if nil != err { @@ -1167,6 +1168,9 @@ func syncRepo(exit, byHand bool) (mergeResult *dejavu.MergeResult, err error) { return } + syncedLatest, _ := repo.Latest() + dataChanged = nil == latest || latest.ID != syncedLatest.ID + util.PushStatusBar(fmt.Sprintf(Conf.Language(149), elapsed.Seconds())) Conf.Sync.Synced = util.CurrentTimeMillis() msg := fmt.Sprintf(Conf.Language(150), trafficStat.UploadFileCount, trafficStat.DownloadFileCount, trafficStat.UploadChunkCount, trafficStat.DownloadChunkCount, humanize.Bytes(uint64(trafficStat.UploadBytes)), humanize.Bytes(uint64(trafficStat.DownloadBytes))) diff --git a/kernel/model/sync.go b/kernel/model/sync.go index 4f1d74239..9cb14bcd3 100644 --- a/kernel/model/sync.go +++ b/kernel/model/sync.go @@ -180,7 +180,7 @@ func syncData(exit, byHand, byWebSocket bool) { now := util.CurrentTimeMillis() Conf.Sync.Synced = now - mergeResult, err := syncRepo(exit, byHand) + dataChanged, err := syncRepo(exit, byHand) code := 1 if nil != err { code = 2 @@ -192,7 +192,7 @@ func syncData(exit, byHand, byWebSocket bool) { connectSyncWebSocket() } - if 1 == Conf.Sync.Mode && !byWebSocket && nil != webSocketConn && Conf.Sync.Perception && mergeResult.DataChanged() { + if 1 == Conf.Sync.Mode && !byWebSocket && nil != webSocketConn && Conf.Sync.Perception && dataChanged { // 如果处于自动同步模式且不是又 WS 触发的同步,则通知其他设备上的内核进行同步 request := map[string]interface{}{ "cmd": "synced",