diff --git a/kernel/model/file.go b/kernel/model/file.go index f8cb21b6b..088860c16 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1247,6 +1247,7 @@ func removeDoc(box *Box, p string) (err error) { treenode.RemoveBlockTreesByPathPrefix(childrenDir) sql.RemoveTreePathQueue(box.ID, childrenDir) + RemoveRecentDoc(removeIDs) if "/" != dir { others, err := os.ReadDir(filepath.Join(util.DataDir, box.ID, dir)) diff --git a/kernel/model/storage.go b/kernel/model/storage.go index 6bf63f134..76b684dc6 100644 --- a/kernel/model/storage.go +++ b/kernel/model/storage.go @@ -38,6 +38,30 @@ type RecentDoc struct { var recentDocLock = sync.Mutex{} +func RemoveRecentDoc(ids []string) { + recentDocLock.Lock() + defer recentDocLock.Unlock() + + recentDocs, err := getRecentDocs() + if nil != err { + return + } + + ids = gulu.Str.RemoveDuplicatedElem(ids) + for i, doc := range recentDocs { + if gulu.Str.Contains(doc.RootID, ids) { + recentDocs = append(recentDocs[:i], recentDocs[i+1:]...) + break + } + } + + err = setRecentDocs(recentDocs) + if nil != err { + return + } + return +} + func SetRecentDoc(doc *RecentDoc) (err error) { recentDocLock.Lock() defer recentDocLock.Unlock()