diff --git a/kernel/api/riff.go b/kernel/api/riff.go index f471d6133..af81ab68f 100644 --- a/kernel/api/riff.go +++ b/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 diff --git a/kernel/model/flashcard.go b/kernel/model/flashcard.go index d0e1b3b2d..aac181e8d 100644 --- a/kernel/model/flashcard.go +++ b/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 }