Просмотр исходного кода

:art: 支持列出和切换最近打开的文档 https://github.com/siyuan-note/siyuan/issues/3293

Liang Ding 2 лет назад
Родитель
Сommit
ae4272eafb
2 измененных файлов с 25 добавлено и 0 удалено
  1. 1 0
      kernel/model/file.go
  2. 24 0
      kernel/model/storage.go

+ 1 - 0
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))

+ 24 - 0
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()