From 28485f7ffb43ea4cf6da99c99aa04883204e2299 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 22 Dec 2022 11:09:28 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=94=AF=E6=8C=81=E9=97=B4=E9=9A=94?= =?UTF-8?q?=E5=A4=8D=E4=B9=A0=20https://github.com/siyuan-note/siyuan/issu?= =?UTF-8?q?es/6710?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/riff.go | 22 ++++++++++++++++++++++ kernel/api/router.go | 1 + kernel/model/flashcard.go | 23 +++++++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/kernel/api/riff.go b/kernel/api/riff.go index af81ab68f..7ce46bdfa 100644 --- a/kernel/api/riff.go +++ b/kernel/api/riff.go @@ -26,6 +26,28 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func renderRiffCard(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + blockID := arg["blockID"].(string) + content, err := model.RenderFlashcard(blockID) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } + + ret.Data = map[string]interface{}{ + "content": content, + } +} + func reviewRiffCard(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index 6fc942972..c75ea67e1 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -305,6 +305,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/riff/addRiffCards", model.CheckAuth, addRiffCards) ginServer.Handle("POST", "/api/riff/removeRiffCards", model.CheckAuth, removeRiffCards) ginServer.Handle("POST", "/api/riff/getRiffDueCards", model.CheckAuth, getRiffDueCards) + ginServer.Handle("POST", "/api/riff/renderRiffCard", model.CheckAuth, renderRiffCard) ginServer.Handle("POST", "/api/riff/reviewRiffCard", model.CheckAuth, reviewRiffCard) ginServer.Handle("POST", "/api/notification/pushMsg", model.CheckAuth, pushMsg) diff --git a/kernel/model/flashcard.go b/kernel/model/flashcard.go index aac181e8d..75a772127 100644 --- a/kernel/model/flashcard.go +++ b/kernel/model/flashcard.go @@ -17,6 +17,8 @@ package model import ( + "github.com/88250/lute" + "github.com/siyuan-note/siyuan/kernel/treenode" "os" "path/filepath" "strings" @@ -31,6 +33,27 @@ import ( var Decks = map[string]*riff.Deck{} var deckLock = sync.Mutex{} +func RenderFlashcard(blockID string) (content string, err error) { + tree, err := loadTreeByBlockID(blockID) + if nil != err { + return + } + + node := treenode.GetNodeInTree(tree, blockID) + if nil == node { + return + } + + luteEngine := NewLute() + luteEngine.RenderOptions.ProtyleContenteditable = false + if ast.NodeDocument == node.Type { + content = luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions) + } else { + content = lute.RenderNodeBlockDOM(node, luteEngine.ParseOptions, luteEngine.RenderOptions) + } + return +} + func ReviewFlashcard(deckID string, blockID string, rating riff.Rating) (err error) { deckLock.Lock() deck := Decks[deckID]