🎨 支持多设备操作不同文档后云端同步合并 https://github.com/siyuan-note/siyuan/issues/5092

This commit is contained in:
Liang Ding 2022-06-05 21:11:57 +08:00
parent 14c10d25e1
commit ccca1b01dd
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
2 changed files with 66 additions and 12 deletions

View file

@ -352,7 +352,8 @@ func SyncData(boot, exit, byHand bool) {
Conf.Sync.Stat = msg
util.PushErrMsg(msg, 7000)
err = syncDirUpsertWorkspaceData(downloadedFiles)
metaPath := filepath.Join(Conf.Sync.GetSaveDir(), pathJSON)
err = syncDirUpsertWorkspaceData(metaPath, downloadedFiles)
if nil != err {
util.LogErrorf("upsert partially downloaded files to workspace data failed: %s", err)
}
@ -529,17 +530,17 @@ func SetSyncMode(mode int) (err error) {
var syncLock = sync.Mutex{}
func syncDirUpsertWorkspaceData(downloadedFiles []string) (err error) {
func syncDirUpsertWorkspaceData(metaPath string, downloadedFiles map[string]bool) (err error) {
start := time.Now()
modified := map[string]bool{}
syncDir := Conf.Sync.GetSaveDir()
for _, file := range downloadedFiles {
for file, _ := range downloadedFiles {
file = filepath.Join(syncDir, file)
modified[file] = true
}
decryptedDataDir, _, err := recoverSyncData(modified)
decryptedDataDir, _, err := recoverSyncData(metaPath, modified)
if nil != err {
util.LogErrorf("decrypt data dir failed: %s", err)
return
@ -567,7 +568,8 @@ func syncDir2WorkspaceData(boot bool) (upsertFiles, removeFiles []string, err er
}
modified := modifiedSyncList(unchanged)
decryptedDataDir, upsertFiles, err := recoverSyncData(modified)
metaPath := filepath.Join(Conf.Sync.GetSaveDir(), pathJSON)
decryptedDataDir, upsertFiles, err := recoverSyncData(metaPath, modified)
if nil != err {
util.LogErrorf("decrypt data dir failed: %s", err)
return
@ -659,7 +661,7 @@ func genCloudIndex(localDirPath string, excludes map[string]bool) (cloudIndex ma
return
}
func recoverSyncData(modified map[string]bool) (decryptedDataDir string, upsertFiles []string, err error) {
func recoverSyncData(metaPath string, modified map[string]bool) (decryptedDataDir string, upsertFiles []string, err error) {
passwd := Conf.E2EEPasswd
decryptedDataDir = filepath.Join(util.WorkspaceDir, "incremental", "sync-decrypt")
if err = os.RemoveAll(decryptedDataDir); nil != err {
@ -670,8 +672,7 @@ func recoverSyncData(modified map[string]bool) (decryptedDataDir string, upsertF
}
syncDir := Conf.Sync.GetSaveDir()
meta := filepath.Join(syncDir, pathJSON)
data, err := os.ReadFile(meta)
data, err := os.ReadFile(metaPath)
if nil != err {
return
}