diff --git a/app/src/card/openCard.ts b/app/src/card/openCard.ts index c86967caa..a7147cdb3 100644 --- a/app/src/card/openCard.ts +++ b/app/src/card/openCard.ts @@ -172,7 +172,6 @@ export const openCardByData = (cardsData: ICard[], html = "") => { fetchPost("/api/riff/reviewRiffCard", { deckID: blocks[index].deckID, cardID: blocks[index].cardID, - blockID: blocks[index].blockID, rating: parseInt(type) }, () => { index++; diff --git a/kernel/api/riff.go b/kernel/api/riff.go index df706cd54..08888645f 100644 --- a/kernel/api/riff.go +++ b/kernel/api/riff.go @@ -76,9 +76,8 @@ 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, cardID, blockID, riff.Rating(rating)) + err := model.ReviewFlashcard(deckID, cardID, riff.Rating(rating)) if nil != err { ret.Code = -1 ret.Msg = err.Error() @@ -126,7 +125,6 @@ func getRiffDueCards(c *gin.Context) { ret.Data = cards } -// TODO 删除闪卡 func removeRiffCards(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) @@ -149,8 +147,11 @@ func removeRiffCards(c *gin.Context) { return } - deck := model.Decks[deckID] - ret.Data = deckData(deck) + if "" != deckID { + deck := model.Decks[deckID] + ret.Data = deckData(deck) + } + // All 卡包不返回数据 } func addRiffCards(c *gin.Context) { diff --git a/kernel/model/flashcard.go b/kernel/model/flashcard.go index 719812084..9e07e3734 100644 --- a/kernel/model/flashcard.go +++ b/kernel/model/flashcard.go @@ -134,7 +134,7 @@ func getCardsBlocks(cards []riff.Card, page int) (blocks []*Block, total, pageCo // reviewCardCache 用于复习时缓存卡片,以便支持撤销。 var reviewCardCache = map[string]riff.Card{} -func ReviewFlashcard(deckID, cardID, blockID string, rating riff.Rating) (err error) { +func ReviewFlashcard(deckID, cardID string, rating riff.Rating) (err error) { deckLock.Lock() defer deckLock.Unlock() @@ -150,16 +150,16 @@ func ReviewFlashcard(deckID, cardID, blockID string, rating riff.Rating) (err er return } - if cachedCard := reviewCardCache[card.ID()]; nil != cachedCard { + if cachedCard := reviewCardCache[cardID]; nil != cachedCard { // 命中缓存说明这张卡片已经复习过了,这次调用复习是撤销后再次复习 // 将缓存的卡片重新覆盖回卡包中,以恢复最开始复习前的状态 deck.SetCard(cachedCard) } else { // 首次复习该卡片,将卡片缓存以便后续支持撤销后再次复习 - reviewCardCache[card.ID()] = card + reviewCardCache[cardID] = card } - deck.Review(blockID, rating) + deck.Review(cardID, rating) err = deck.Save() if nil != err { logging.LogErrorf("save deck [%s] failed: %s", deckID, err) @@ -602,6 +602,12 @@ func AddFlashcards(deckID string, blockIDs []string) (err error) { } for _, blockID := range blockIDs { + cards := deck.GetCardsByBlockID(blockID) + if 0 < len(cards) { + // 一个块只能添加生成一张闪卡 https://github.com/siyuan-note/siyuan/issues/7476 + continue + } + cardID := ast.NewNodeID() deck.AddCard(cardID, blockID) }