diff --git a/drivers/189.go b/drivers/189.go index e993b825..2eafde1b 100644 --- a/drivers/189.go +++ b/drivers/189.go @@ -67,8 +67,9 @@ func (c Cloud189) Items() []Item { } func (c Cloud189) Save(account *model.Account, old *model.Account) error { - if old != nil { + if old != nil && old.Name != account.Name { delete(client189Map, old.Name) + model.DeleteAccountFromMap(old.Name) } if err := c.Login(account); err != nil { account.Status = err.Error() diff --git a/drivers/alidrive.go b/drivers/alidrive.go index 251cebac..7a827799 100644 --- a/drivers/alidrive.go +++ b/drivers/alidrive.go @@ -349,7 +349,9 @@ func (a AliDrive) RefreshToken(account *model.Account) error { func (a AliDrive) Save(account *model.Account, old *model.Account) error { if old != nil { conf.Cron.Remove(cron.EntryID(old.CronId)) - model.DeleteAccountFromMap(old.Name) + if old.Name != account.Name { + model.DeleteAccountFromMap(old.Name) + } } if account.RootFolder == "" { account.RootFolder = "root" diff --git a/drivers/driver.go b/drivers/driver.go index 1ed66353..2e8c29b8 100644 --- a/drivers/driver.go +++ b/drivers/driver.go @@ -9,9 +9,9 @@ import ( type Driver interface { Items() []Item + Save(account *model.Account, old *model.Account) error Path(path string, account *model.Account) (*model.File, []*model.File, error) Link(path string, account *model.Account) (string, error) - Save(account *model.Account, old *model.Account) error Proxy(c *gin.Context) Preview(path string, account *model.Account) (interface{}, error) // TODO diff --git a/drivers/native.go b/drivers/native.go index b7d6ff46..f0c9afaa 100644 --- a/drivers/native.go +++ b/drivers/native.go @@ -17,7 +17,7 @@ type Native struct { } func (n Native) Preview(path string, account *model.Account) (interface{}, error) { - return nil,fmt.Errorf("no need") + return nil, fmt.Errorf("no need") } func (n Native) Items() []Item { @@ -36,6 +36,9 @@ func (n Native) Proxy(c *gin.Context) { } func (n Native) Save(account *model.Account, old *model.Account) error { + if old != nil { + model.DeleteAccountFromMap(old.Name) + } log.Debugf("save a account: [%s]", account.Name) if !utils.Exists(account.RootFolder) { account.Status = fmt.Sprintf("[%s] not exist", account.RootFolder) @@ -73,7 +76,7 @@ func (n Native) Path(path string, account *model.Account) (*model.File, []*model Size: f.Size(), Type: 0, UpdatedAt: &time, - Driver: "Native", + Driver: "Native", } if f.IsDir() { file.Type = conf.FOLDER @@ -94,7 +97,7 @@ func (n Native) Path(path string, account *model.Account) (*model.File, []*model Size: f.Size(), Type: utils.GetFileType(filepath.Ext(f.Name())), UpdatedAt: &time, - Driver: "Native", + Driver: "Native", } return file, nil, nil } diff --git a/drivers/onedrive.go b/drivers/onedrive.go index 2a520797..ea3b9571 100644 --- a/drivers/onedrive.go +++ b/drivers/onedrive.go @@ -273,7 +273,9 @@ func (o Onedrive) Save(account *model.Account, old *model.Account) error { } if old != nil { conf.Cron.Remove(cron.EntryID(old.CronId)) - model.DeleteAccountFromMap(old.Name) + if old.Name != account.Name { + model.DeleteAccountFromMap(old.Name) + } } account.RootFolder = utils.ParsePath(account.RootFolder) err := o.RefreshToken(account)