diff --git a/app/src/card/openCard.ts b/app/src/card/openCard.ts index 7d314ea19..246cf60dc 100644 --- a/app/src/card/openCard.ts +++ b/app/src/card/openCard.ts @@ -174,6 +174,7 @@ export const openCardByData = (cardsData: ICard[], html = "") => { if (["0", "1", "2", "3"].includes(type)) { fetchPost("/api/riff/reviewRiffCard", { deckID: blocks[index].deckID, + cardID: blocks[index].cardID, blockID: blocks[index].blockID, rating: parseInt(type) }, () => { diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index b8baeb851..2ecd60833 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -67,8 +67,9 @@ interface ICardPackage { } interface ICard { - blockID: string deckID: string + cardID: string + blockID: string nextDues: IObject } diff --git a/kernel/api/riff.go b/kernel/api/riff.go index 7a3cb31a2..68f445cec 100644 --- a/kernel/api/riff.go +++ b/kernel/api/riff.go @@ -57,9 +57,9 @@ func getRiffCards(c *gin.Context) { deckID := arg["id"].(string) page := int(arg["page"].(float64)) - blockIDs, total, pageCount := model.GetFlashcards(deckID, page) + blocks, total, pageCount := model.GetFlashcards(deckID, page) ret.Data = map[string]interface{}{ - "blocks": blockIDs, + "blocks": blocks, "total": total, "pageCount": pageCount, } @@ -75,9 +75,10 @@ func reviewRiffCard(c *gin.Context) { } deckID := arg["deckID"].(string) + cardID := arg["cardID"].(string) blockID := arg["blockID"].(string) rating := int(arg["rating"].(float64)) - err := model.ReviewFlashcard(deckID, blockID, riff.Rating(rating)) + err := model.ReviewFlashcard(deckID, cardID, blockID, riff.Rating(rating)) if nil != err { ret.Code = -1 ret.Msg = err.Error() @@ -125,6 +126,7 @@ func getRiffDueCards(c *gin.Context) { ret.Data = cards } +// TODO 删除闪卡 func removeRiffCards(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/go.mod b/kernel/go.mod index f998326e3..15991ff74 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -47,7 +47,7 @@ require ( github.com/siyuan-note/filelock v0.0.0-20230223100551-200cbe1cf84e github.com/siyuan-note/httpclient v0.0.0-20230223101139-409ed0b4c5ff github.com/siyuan-note/logging v0.0.0-20230223101545-ec2cbf198ffb - github.com/siyuan-note/riff v0.0.0-20230224070227-4514ccc3e496 + github.com/siyuan-note/riff v0.0.0-20230224074237-c16f59420520 github.com/steambap/captcha v1.4.1 github.com/studio-b12/gowebdav v0.0.0-20230203202212-3282f94193f2 github.com/vmihailenco/msgpack/v5 v5.3.5 diff --git a/kernel/go.sum b/kernel/go.sum index 08b9c72b3..d2e01cb3f 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -286,8 +286,8 @@ github.com/siyuan-note/httpclient v0.0.0-20230223101139-409ed0b4c5ff h1:3G48J/tG github.com/siyuan-note/httpclient v0.0.0-20230223101139-409ed0b4c5ff/go.mod h1:/fjYEiYPN2ZNR2zVTopobwzo3rOychV2qbsutxiV0jI= github.com/siyuan-note/logging v0.0.0-20230223101545-ec2cbf198ffb h1:qzz7ZQw7/tHJd1IST+8UymXFF8RacokMLD7VZgyS+ww= github.com/siyuan-note/logging v0.0.0-20230223101545-ec2cbf198ffb/go.mod h1:6mRFtAAvYPn3cDzqvyv+t8BVPGqpONDMMb5ywOhY1D4= -github.com/siyuan-note/riff v0.0.0-20230224070227-4514ccc3e496 h1:6u9vlE4EhRja4abccUPGNmG+aMBm/D+5lVomkoYuSmo= -github.com/siyuan-note/riff v0.0.0-20230224070227-4514ccc3e496/go.mod h1:XJtLlKCr8cZE+lzykM4edHHih92M9M50UNw/nDLYRN8= +github.com/siyuan-note/riff v0.0.0-20230224074237-c16f59420520 h1:14vDSmi+YYBCnPb41ESSaq8kzgx6Sj4fE1mNJQwVObw= +github.com/siyuan-note/riff v0.0.0-20230224074237-c16f59420520/go.mod h1:XJtLlKCr8cZE+lzykM4edHHih92M9M50UNw/nDLYRN8= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.7 h1:I6tZjLXD2Q1kjvNbIzB1wvQBsXmKXiVrhpRE8ZjP5jY= diff --git a/kernel/model/flashcard.go b/kernel/model/flashcard.go index 6b0a71579..8487d15ae 100644 --- a/kernel/model/flashcard.go +++ b/kernel/model/flashcard.go @@ -158,7 +158,7 @@ func GetFlashcards(deckID string, page int) (blocks []*Block, total, pageCount i // reviewCardCache 用于复习时缓存卡片,以便支持撤销。 var reviewCardCache = map[string]riff.Card{} -func ReviewFlashcard(deckID string, blockID string, rating riff.Rating) (err error) { +func ReviewFlashcard(deckID, cardID, blockID string, rating riff.Rating) (err error) { deckLock.Lock() defer deckLock.Unlock() @@ -168,9 +168,9 @@ func ReviewFlashcard(deckID string, blockID string, rating riff.Rating) (err err } deck := Decks[deckID] - card := deck.GetCard(blockID) + card := deck.GetCard(cardID) if nil == card { - logging.LogErrorf("card not found [%s]", blockID) + logging.LogErrorf("card not found [%s]", cardID) return } @@ -467,7 +467,12 @@ func removeFlashcard(blockIDs []string, deck *riff.Deck) { } for _, blockID := range blockIDs { - deck.RemoveCard(blockID) + // TODO 这里的代码需要重构,要支持一个块对应多张卡 + cardID := deck.BlockCard[blockID] + if "" == cardID { + continue + } + deck.RemoveCard(cardID) } err := deck.Save()