diff --git a/kernel/api/repo.go b/kernel/api/repo.go index 84bf860bb..29af6106f 100644 --- a/kernel/api/repo.go +++ b/kernel/api/repo.go @@ -74,6 +74,8 @@ func diffRepoSnapshots(c *gin.Context) { "updatesLeft": diff.UpdatesLeft, "updatesRight": diff.UpdatesRight, "removesRight": diff.RemovesRight, + "left": diff.LeftIndex, + "right": diff.RightIndex, } } diff --git a/kernel/api/riff.go b/kernel/api/riff.go new file mode 100644 index 000000000..2f5d4b82c --- /dev/null +++ b/kernel/api/riff.go @@ -0,0 +1,50 @@ +// SiYuan - Build Your Eternal Digital Garden +// Copyright (c) 2020-present, b3log.org +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package api + +import ( + "github.com/88250/gulu" + "github.com/gin-gonic/gin" + "github.com/siyuan-note/siyuan/kernel/model" + "github.com/siyuan-note/siyuan/kernel/util" + "net/http" +) + +func createRiffDeck(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + id := arg["id"].(string) + id, rootID, content, isLargeDoc, err := model.OpenRepoSnapshotDoc(id) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } + + ret.Data = map[string]interface{}{ + "id": id, + "rootID": rootID, + "content": content, + "isLargeDoc": isLargeDoc, + } +} diff --git a/kernel/api/router.go b/kernel/api/router.go index 736665257..62fb8b8e1 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -299,6 +299,8 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/repo/diffRepoSnapshots", model.CheckAuth, diffRepoSnapshots) ginServer.Handle("POST", "/api/repo/openRepoSnapshotDoc", model.CheckAuth, openRepoSnapshotDoc) + ginServer.Handle("POST", "/api/riff/createRiffDeck", model.CheckAuth, createRiffDeck) + ginServer.Handle("POST", "/api/notification/pushMsg", model.CheckAuth, pushMsg) ginServer.Handle("POST", "/api/notification/pushErrMsg", model.CheckAuth, pushErrMsg) diff --git a/kernel/go.mod b/kernel/go.mod index f644c60b8..8ec08aa52 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -39,7 +39,7 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/radovskyb/watcher v1.0.7 github.com/shirou/gopsutil/v3 v3.22.11 - github.com/siyuan-note/dejavu v0.0.0-20221221052742-914221eec6f8 + github.com/siyuan-note/dejavu v0.0.0-20221221065751-91ea22509756 github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75 github.com/siyuan-note/eventbus v0.0.0-20220916025349-3ac6e75522da github.com/siyuan-note/filelock v0.0.0-20221117095924-e1947438a35e diff --git a/kernel/go.sum b/kernel/go.sum index b74ea762a..2becf2ac1 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -373,8 +373,8 @@ github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1l github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= -github.com/siyuan-note/dejavu v0.0.0-20221221052742-914221eec6f8 h1:eQaKK/dh+a/9HX+H5BIGwxj4T3PQphiphrGdyTkSlmQ= -github.com/siyuan-note/dejavu v0.0.0-20221221052742-914221eec6f8/go.mod h1:bemsV89S70xPIoY6CX9SkL3IX6YkCwS8nK09KTKg/S4= +github.com/siyuan-note/dejavu v0.0.0-20221221065751-91ea22509756 h1:lp8ihGlC8Mlqn8zI8CeFzWzoi90EaFTWBuCFUwGC5fg= +github.com/siyuan-note/dejavu v0.0.0-20221221065751-91ea22509756/go.mod h1:bemsV89S70xPIoY6CX9SkL3IX6YkCwS8nK09KTKg/S4= github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75 h1:Bi7/7f29LW+Fm0cHc0J1NO1cZqyJwljSWVmfOqVZgaE= github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw= github.com/siyuan-note/eventbus v0.0.0-20220916025349-3ac6e75522da h1:/jNhl7LC+9BhkWvNxuJDdsNfA/2wvfuj9mqWx4CbV90= diff --git a/kernel/model/repository.go b/kernel/model/repository.go index 188dd6eaa..ca96ff085 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -128,10 +128,12 @@ func OpenRepoSnapshotDoc(fileID string) (id, rootID, content string, isLargeDoc } type LeftRightDiff struct { - AddsLeft []*DiffFile `json:"addsLeft"` - UpdatesLeft []*DiffFile `json:"updatesLeft"` - UpdatesRight []*DiffFile `json:"updatesRight"` - RemovesRight []*DiffFile `json:"removesRight"` + LeftIndex *entity.Index `json:"leftIndex"` + RightIndex *entity.Index `json:"rightIndex"` + AddsLeft []*DiffFile `json:"addsLeft"` + UpdatesLeft []*DiffFile `json:"updatesLeft"` + UpdatesRight []*DiffFile `json:"updatesRight"` + RemovesRight []*DiffFile `json:"removesRight"` } type DiffFile struct { @@ -155,7 +157,13 @@ func DiffRepoSnapshots(left, right string) (ret *LeftRightDiff, err error) { return } - ret = &LeftRightDiff{} + diff.LeftIndex.Files = nil + diff.RightIndex.Files = nil + + ret = &LeftRightDiff{ + LeftIndex: diff.LeftIndex, + RightIndex: diff.RightIndex, + } luteEngine := NewLute() for _, addLeft := range diff.AddsLeft { title, err := parseTitleInSnapshot(addLeft.ID, repo, luteEngine)