Bläddra i källkod

:art: Add kernel API `/api/riff/getRiffCardsByBlockIDs` Fix https://github.com/siyuan-note/siyuan/issues/10535

Daniel 1 år sedan
förälder
incheckning
fd709b99b7
2 ändrade filer med 22 tillägg och 11 borttagningar
  1. 2 9
      kernel/api/riff.go
  2. 20 2
      kernel/model/flashcard.go

+ 2 - 9
kernel/api/riff.go

@@ -40,17 +40,10 @@ func getRiffCardsByBlockIDs(c *gin.Context) {
 	for _, blockID := range blockIDsArg {
 		blockIDs = append(blockIDs, blockID.(string))
 	}
-	page := int(arg["page"].(float64))
-	pageSize := 20
-	if nil != arg["pageSize"] {
-		pageSize = int(arg["pageSize"].(float64))
-	}
 
-	blocks, total, pageCount := model.GetFlashcardsByBlockIDs(blockIDs, page, pageSize)
+	blocks := model.GetFlashcardsByBlockIDs(blockIDs)
 	ret.Data = map[string]interface{}{
-		"blocks":    blocks,
-		"total":     total,
-		"pageCount": pageCount,
+		"blocks": blocks,
 	}
 }
 

+ 20 - 2
kernel/model/flashcard.go

@@ -38,19 +38,37 @@ import (
 	"github.com/siyuan-note/siyuan/kernel/util"
 )
 
-func GetFlashcardsByBlockIDs(blockIDs []string, page, pageSize int) (blocks []*Block, total, pageCount int) {
+func GetFlashcardsByBlockIDs(blockIDs []string) (ret []*Block) {
 	deckLock.Lock()
 	defer deckLock.Unlock()
 
 	waitForSyncingStorages()
 
+	ret = []*Block{}
 	deck := Decks[builtinDeckID]
 	if nil == deck {
 		return
 	}
 
 	cards := deck.GetCardsByBlockIDs(blockIDs)
-	blocks, total, pageCount = getCardsBlocks(cards, page, pageSize)
+	blocks, _, _ := getCardsBlocks(cards, 1, math.MaxInt)
+
+	for _, blockID := range blockIDs {
+		found := false
+		for _, block := range blocks {
+			if blockID == block.ID {
+				found = true
+				ret = append(ret, block)
+				break
+			}
+		}
+		if !found {
+			ret = append(ret, &Block{
+				ID:      blockID,
+				Content: Conf.Language(180),
+			})
+		}
+	}
 	return
 }