diff --git a/kernel/api/riff.go b/kernel/api/riff.go index 27aabef9b..f471d6133 100644 --- a/kernel/api/riff.go +++ b/kernel/api/riff.go @@ -113,6 +113,25 @@ func addRiffCards(c *gin.Context) { } } +func renameRiffDeck(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + deckID := arg["deckID"].(string) + name := arg["name"].(string) + err := model.RenameDeck(deckID, name) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } +} + func createRiffDeck(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 3263a27f0..6fc942972 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -300,6 +300,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/repo/openRepoSnapshotDoc", model.CheckAuth, openRepoSnapshotDoc) ginServer.Handle("POST", "/api/riff/createRiffDeck", model.CheckAuth, createRiffDeck) + ginServer.Handle("POST", "/api/riff/renameRiffDeck", model.CheckAuth, renameRiffDeck) ginServer.Handle("POST", "/api/riff/getRiffDecks", model.CheckAuth, getRiffDecks) ginServer.Handle("POST", "/api/riff/addRiffCards", model.CheckAuth, addRiffCards) ginServer.Handle("POST", "/api/riff/removeRiffCards", model.CheckAuth, removeRiffCards) diff --git a/kernel/model/flashcard.go b/kernel/model/flashcard.go index fa4169e77..d0e1b3b2d 100644 --- a/kernel/model/flashcard.go +++ b/kernel/model/flashcard.go @@ -22,7 +22,6 @@ import ( "strings" "sync" - "github.com/88250/gulu" "github.com/88250/lute/ast" "github.com/siyuan-note/logging" "github.com/siyuan-note/riff" @@ -106,7 +105,8 @@ func AddFlashcards(deckID string, blockIDs []string) (err error) { func InitFlashcards() { riffSavePath := getRiffDir() - if !gulu.File.IsDir(riffSavePath) { + if err := os.MkdirAll(riffSavePath, 0755); nil != err { + logging.LogErrorf("create riff dir [%s] failed: %s", riffSavePath, err) return } @@ -125,11 +125,30 @@ func InitFlashcards() { continue } - deckLock.Lock() Decks[deckID] = deck - deckLock.Unlock() } } + + if 1 > len(Decks) { + deck, createErr := CreateDeck("Default Deck") + if nil == createErr { + Decks[deck.ID] = deck + } + } +} + +func RenameDeck(deckID string, name string) (err error) { + deckLock.Lock() + deck := Decks[deckID] + deckLock.Unlock() + + deck.Name = name + err = deck.Save() + if nil != err { + logging.LogErrorf("save deck [%s] failed: %s", deckID, err) + return + } + return } func CreateDeck(name string) (deck *riff.Deck, err error) {