Explorar o código

:art: 支持浏览卡包内的闪卡 https://github.com/siyuan-note/siyuan/issues/6943

Liang Ding %!s(int64=2) %!d(string=hai) anos
pai
achega
7d450f88eb
Modificáronse 3 ficheiros con 26 adicións e 4 borrados
  1. 3 2
      kernel/api/riff.go
  2. 1 1
      kernel/api/router.go
  3. 22 1
      kernel/model/flashcard.go

+ 3 - 2
kernel/api/riff.go

@@ -27,7 +27,7 @@ import (
 	"github.com/siyuan-note/siyuan/kernel/util"
 )
 
-func searchRiffCards(c *gin.Context) {
+func getRiffCards(c *gin.Context) {
 	ret := gulu.Ret.NewResult()
 	defer c.JSON(http.StatusOK, ret)
 
@@ -37,7 +37,8 @@ func searchRiffCards(c *gin.Context) {
 	}
 
 	deckID := arg["deckID"].(string)
-	blockIDs := model.SearchFlashcard(deckID)
+	page := int(arg["page"].(float64))
+	blockIDs := model.GetFlashcards(deckID, page)
 	ret.Data = map[string]interface{}{
 		"blockIDs": blockIDs,
 	}

+ 1 - 1
kernel/api/router.go

@@ -308,7 +308,7 @@ func ServeAPI(ginServer *gin.Engine) {
 	ginServer.Handle("POST", "/api/riff/removeRiffCards", model.CheckAuth, removeRiffCards)
 	ginServer.Handle("POST", "/api/riff/getRiffDueCards", model.CheckAuth, getRiffDueCards)
 	ginServer.Handle("POST", "/api/riff/reviewRiffCard", model.CheckAuth, reviewRiffCard)
-	ginServer.Handle("POST", "/api/riff/searchRiffCards", model.CheckAuth, searchRiffCards)
+	ginServer.Handle("POST", "/api/riff/getRiffCards", model.CheckAuth, getRiffCards)
 
 	ginServer.Handle("POST", "/api/notification/pushMsg", model.CheckAuth, pushMsg)
 	ginServer.Handle("POST", "/api/notification/pushErrMsg", model.CheckAuth, pushErrMsg)

+ 22 - 1
kernel/model/flashcard.go

@@ -20,6 +20,7 @@ import (
 	"errors"
 	"os"
 	"path/filepath"
+	"sort"
 	"strings"
 	"sync"
 	"time"
@@ -38,7 +39,27 @@ import (
 var Decks = map[string]*riff.Deck{}
 var deckLock = sync.Mutex{}
 
-func SearchFlashcard(deckID string) (blockIDs []string) {
+func GetFlashcards(deckID string, page int) (blockIDs []string) {
+	deck := Decks[deckID]
+	if nil == deck {
+		return
+	}
+
+	var allBlockIDs []string
+	for bID, _ := range deck.BlockCard {
+		allBlockIDs = append(allBlockIDs, bID)
+	}
+	sort.Strings(allBlockIDs)
+
+	start := (page - 1) * 20
+	end := page * 20
+	if start > len(allBlockIDs) {
+		return
+	}
+	if end > len(allBlockIDs) {
+		end = len(allBlockIDs)
+	}
+	blockIDs = allBlockIDs[start:end]
 	return
 }