From 89fb0664f1063855bdaf70350ab3ebda18a31e8e Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 25 Feb 2023 11:51:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?:art:=20=E4=B8=80=E4=B8=AA=E5=9D=97?= =?UTF-8?q?=E5=8F=AA=E8=83=BD=E6=B7=BB=E5=8A=A0=E7=94=9F=E6=88=90=E4=B8=80?= =?UTF-8?q?=E5=BC=A0=E9=97=AA=E5=8D=A1=20https://github.com/siyuan-note/si?= =?UTF-8?q?yuan/issues/7476?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/riff.go | 1 - kernel/model/flashcard.go | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/api/riff.go b/kernel/api/riff.go index df706cd54..a141c4d0e 100644 --- a/kernel/api/riff.go +++ b/kernel/api/riff.go @@ -126,7 +126,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) diff --git a/kernel/model/flashcard.go b/kernel/model/flashcard.go index 719812084..fb24dedbb 100644 --- a/kernel/model/flashcard.go +++ b/kernel/model/flashcard.go @@ -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) } From 3f88597b7dccc40c6a5ccce7a27a45dddab323a6 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 25 Feb 2023 13:41:51 +0800 Subject: [PATCH 2/3] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E9=97=AA=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/card/openCard.ts | 1 - kernel/api/riff.go | 9 +++++---- kernel/model/flashcard.go | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/card/openCard.ts b/app/src/card/openCard.ts index 0024a5b2b..065c09083 100644 --- a/app/src/card/openCard.ts +++ b/app/src/card/openCard.ts @@ -176,7 +176,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 a141c4d0e..870b2778d 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() @@ -148,8 +147,10 @@ func removeRiffCards(c *gin.Context) { return } - deck := model.Decks[deckID] - ret.Data = deckData(deck) + if "" != deckID { + deck := model.Decks[deckID] + ret.Data = deckData(deck) + } } func addRiffCards(c *gin.Context) { diff --git a/kernel/model/flashcard.go b/kernel/model/flashcard.go index fb24dedbb..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) From 35eb861256f811feb55c6d01dc01eb04bfbd237f Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 25 Feb 2023 13:42:53 +0800 Subject: [PATCH 3/3] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E9=97=AA=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/riff.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/api/riff.go b/kernel/api/riff.go index 870b2778d..08888645f 100644 --- a/kernel/api/riff.go +++ b/kernel/api/riff.go @@ -151,6 +151,7 @@ func removeRiffCards(c *gin.Context) { deck := model.Decks[deckID] ret.Data = deckData(deck) } + // All 卡包不返回数据 } func addRiffCards(c *gin.Context) {