Browse Source

:art: 支持间隔复习 https://github.com/siyuan-note/siyuan/issues/6710

Liang Ding 2 years ago
parent
commit
c5b1279c82
2 changed files with 27 additions and 10 deletions
  1. 0 1
      kernel/api/riff.go
  2. 27 9
      kernel/model/flashcard.go

+ 0 - 1
kernel/api/riff.go

@@ -56,7 +56,6 @@ func getRiffDueCards(c *gin.Context) {
 	}
 
 	deckID := arg["deckID"].(string)
-
 	cards, err := model.GetDueFlashcards(deckID)
 	if nil != err {
 		ret.Code = -1

+ 27 - 9
kernel/model/flashcard.go

@@ -45,12 +45,11 @@ func ReviewFlashcard(deckID string, blockID string, rating riff.Rating) (err err
 	return
 }
 
-type Flashcard struct {
-	ID      string
-	BlockID string
-}
+func GetDueFlashcards(deckID string) (ret []string, err error) {
+	if "" == deckID {
+		return getAllDueFlashcards()
+	}
 
-func GetDueFlashcards(deckID string) (ret []*Flashcard, err error) {
 	deckLock.Lock()
 	deck := Decks[deckID]
 	deckLock.Unlock()
@@ -62,10 +61,29 @@ func GetDueFlashcards(deckID string) (ret []*Flashcard, err error) {
 		if nil != getErr {
 			continue
 		}
-		ret = append(ret, &Flashcard{
-			ID:      card.ID(),
-			BlockID: blockID,
-		})
+		ret = append(ret, blockID)
+	}
+	return
+}
+
+func getAllDueFlashcards() (ret []string, err error) {
+	blockIDs := map[string]bool{}
+	for _, deck := range Decks {
+		cards := deck.Dues()
+		for _, card := range cards {
+			blockID := card.BlockID()
+			_, getErr := GetBlock(blockID)
+			if nil != getErr {
+				continue
+			}
+
+			if blockIDs[blockID] {
+				continue
+			}
+
+			ret = append(ret, blockID)
+			blockIDs[blockID] = true
+		}
 	}
 	return
 }