🔥 移除旧版云端同步和备份功能入口 https://github.com/siyuan-note/siyuan/issues/5405

This commit is contained in:
Liang Ding 2022-07-13 17:14:54 +08:00
parent bc046e7339
commit 8581f83e61
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
12 changed files with 54 additions and 312 deletions

View file

@ -84,12 +84,10 @@ func SyncData(boot, exit, byHand bool) {
if exit {
ExitSyncSucc = 0
}
if !IsSubscriber() || !Conf.Sync.Enabled || "" == Conf.Sync.CloudName || ("" == Conf.E2EEPasswd && !Conf.Sync.UseDataRepo) {
if !IsSubscriber() || !Conf.Sync.Enabled || "" == Conf.Sync.CloudName {
if byHand {
if "" == Conf.Sync.CloudName {
util.PushMsg(Conf.Language(123), 5000)
} else if "" == Conf.E2EEPasswd {
util.PushMsg(Conf.Language(11), 5000)
} else if !Conf.Sync.Enabled {
util.PushMsg(Conf.Language(124), 5000)
}
@ -513,15 +511,6 @@ func SetSyncEnable(b bool) (err error) {
return
}
func SetSyncUseDataRepo(b bool) (err error) {
syncLock.Lock()
defer syncLock.Unlock()
Conf.Sync.UseDataRepo = b
Conf.Save()
return
}
func SetSyncMode(mode int) (err error) {
syncLock.Lock()
defer syncLock.Unlock()
@ -1009,83 +998,6 @@ func calcUnchangedSyncList() (ret map[string]bool, removes []string, err error)
return
}
// calcUnchangedDataList 计算 sync 和 data 一致(没有修改过)的文件列表 unchangedDataList并删除 sync 中不存在于 data 中的多余文件 removeList。
func calcUnchangedDataList(passwd string) (unchangedDataList map[string]bool, removeList map[string]bool, err error) {
syncDir := Conf.Sync.GetSaveDir()
meta := filepath.Join(syncDir, pathJSON)
if !gulu.File.IsExist(meta) {
return
}
data, err := os.ReadFile(meta)
if nil != err {
return
}
data, err = encryption.AESGCMDecryptBinBytes(data, passwd)
if nil != err {
err = errors.New(Conf.Language(40))
return
}
metaJSON := map[string]string{}
if err = gulu.JSON.UnmarshalJSON(data, &metaJSON); nil != err {
return
}
unchangedDataList = map[string]bool{}
removeList = map[string]bool{}
filepath.Walk(syncDir, func(path string, info fs.FileInfo, _ error) error {
if syncDir == path || pathJSON == info.Name() || "index.json" == info.Name() || info.IsDir() {
return nil
}
encryptedP := strings.TrimPrefix(path, syncDir+string(os.PathSeparator))
encryptedP = filepath.ToSlash(encryptedP)
decryptedP := metaJSON[encryptedP]
if "" == decryptedP {
removeList[path] = true
if gulu.File.IsDir(path) {
return filepath.SkipDir
}
return nil
}
dataP := filepath.Join(util.DataDir, decryptedP)
dataP = filepath.FromSlash(dataP)
if !gulu.File.IsExist(dataP) { // data 已经删除的文件
removeList[path] = true
if gulu.File.IsDir(path) {
return filepath.SkipDir
}
return nil
}
stat, _ := os.Stat(dataP)
dataModTime := stat.ModTime()
if info.ModTime() == dataModTime {
unchangedDataList[dataP] = true
return nil
}
return nil
})
tmp := map[string]bool{}
// 在 sync 中删除 data 中已经删除的文件
for remove, _ := range removeList {
if strings.HasSuffix(remove, "index.json") {
continue
}
p := strings.TrimPrefix(remove, syncDir)
p = filepath.ToSlash(p)
tmp[p] = true
if err = os.RemoveAll(remove); nil != err {
util.LogErrorf("remove [%s] failed: %s", remove, err)
}
}
removeList = tmp
return
}
func getWorkspaceDataConf() (conf *filesys.DataConf, err error) {
conf = &filesys.DataConf{Updated: util.CurrentTimeMillis(), Device: Conf.System.ID}
confPath := filepath.Join(Conf.Sync.GetSaveDir(), ".siyuan", "conf.json")
@ -1157,17 +1069,13 @@ func CreateCloudSyncDir(name string) (err error) {
return errors.New(Conf.Language(37))
}
if Conf.Sync.UseDataRepo {
var cloudInfo *dejavu.CloudInfo
cloudInfo, err = buildCloudInfo()
if nil != err {
return
}
err = dejavu.CreateCloudRepo(name, cloudInfo)
} else {
err = createCloudSyncDirOSS(name)
var cloudInfo *dejavu.CloudInfo
cloudInfo, err = buildCloudInfo()
if nil != err {
return
}
err = dejavu.CreateCloudRepo(name, cloudInfo)
return
}
@ -1376,28 +1284,8 @@ func GetSyncDirection(cloudDirName string) (code int, msg string) { // 0
return
}
if Conf.Sync.UseDataRepo {
return 40, ""
}
syncConf, err := getWorkspaceDataConf()
if nil != err {
msg = fmt.Sprintf(Conf.Language(80), formatErrorMsg(err))
return
}
cloudSyncVer, err := getCloudSyncVer(cloudDirName)
if nil != err {
msg = fmt.Sprintf(Conf.Language(24), err.Error())
return
}
if cloudSyncVer < syncConf.SyncVer {
return 10, fmt.Sprintf(Conf.Language(89), cloudDirName) // 上传
}
if cloudSyncVer > syncConf.SyncVer {
return 20, fmt.Sprintf(Conf.Language(90), cloudDirName) // 下载
}
return 30, fmt.Sprintf(Conf.Language(91), cloudDirName) // 一致
// TODO: 彻底移除方向判断
return 40, ""
}
func IncWorkspaceDataVer() {