云端支持多个数据仓库目录 Fix https://github.com/siyuan-note/siyuan/issues/5335

This commit is contained in:
Liang Ding 2022-07-05 00:30:47 +08:00
parent ce516e41fb
commit 114d85431f
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
4 changed files with 62 additions and 15 deletions

View file

@ -272,13 +272,9 @@ func syncRepo(boot, exit, byHand bool) {
}
start := time.Now()
cloudInfo := &dejavu.CloudInfo{
Dir: "main",
UserID: Conf.User.UserId,
Token: Conf.User.UserToken,
LimitSize: int64(Conf.User.UserSiYuanRepoSize - Conf.User.UserSiYuanAssetSize),
ProxyURL: Conf.System.NetworkProxy.String(),
Server: util.AliyunServer,
cloudInfo, err := buildCloudInfo()
if nil != err {
return
}
syncContext := map[string]interface{}{CtxPushMsg: CtxPushMsgToStatusBar}
@ -471,3 +467,20 @@ func contextPushMsg(context map[string]interface{}, msg string) {
util.PushEndlessProgress(msg)
}
}
func buildCloudInfo() (ret *dejavu.CloudInfo, err error) {
if nil == Conf.User || "" == Conf.Sync.CloudName {
err = errors.New("invalid cloud info")
return
}
ret = &dejavu.CloudInfo{
Dir: Conf.Sync.CloudName,
UserID: Conf.User.UserId,
Token: Conf.User.UserToken,
LimitSize: int64(Conf.User.UserSiYuanRepoSize - Conf.User.UserSiYuanAssetSize),
ProxyURL: Conf.System.NetworkProxy.String(),
Server: util.AliyunServer,
}
return
}

View file

@ -35,6 +35,7 @@ import (
"github.com/88250/gulu"
"github.com/dustin/go-humanize"
gitignore "github.com/sabhiram/go-gitignore"
"github.com/siyuan-note/dejavu"
"github.com/siyuan-note/encryption"
"github.com/siyuan-note/filelock"
"github.com/siyuan-note/siyuan/kernel/cache"
@ -1150,9 +1151,16 @@ func CreateCloudSyncDir(name string) (err error) {
return errors.New(Conf.Language(37))
}
err = createCloudSyncDirOSS(name)
if nil != err {
return
if Conf.Sync.UseDataRepo {
var cloudInfo *dejavu.CloudInfo
cloudInfo, err = buildCloudInfo()
if nil != err {
return
}
err = dejavu.CreateCloudRepo(name, cloudInfo)
} else {
err = createCloudSyncDirOSS(name)
}
return
}
@ -1165,7 +1173,18 @@ func RemoveCloudSyncDir(name string) (err error) {
return
}
err = removeCloudDirPath("sync/" + name)
if Conf.Sync.UseDataRepo {
var cloudInfo *dejavu.CloudInfo
cloudInfo, err = buildCloudInfo()
if nil != err {
return
}
err = dejavu.RemoveCloudRepo(name, cloudInfo)
} else {
err = removeCloudDirPath("sync/" + name)
}
if nil != err {
return
}
@ -1179,8 +1198,23 @@ func RemoveCloudSyncDir(name string) (err error) {
func ListCloudSyncDir() (syncDirs []*Sync, hSize string, err error) {
syncDirs = []*Sync{}
var dirs []map[string]interface{}
var size int64
if Conf.Sync.UseDataRepo {
var cloudInfo *dejavu.CloudInfo
cloudInfo, err = buildCloudInfo()
if nil != err {
return
}
dirs, size, err = dejavu.GetCloudRepos(cloudInfo)
} else {
dirs, size, err = listCloudSyncDirOSS()
}
if nil != err {
return
}
dirs, size, err := listCloudSyncDirOSS()
for _, d := range dirs {
dirSize := int64(d["size"].(float64))
syncDirs = append(syncDirs, &Sync{