diff --git a/api/activity.go b/api/activity.go index 80f76bcf..4b43088f 100644 --- a/api/activity.go +++ b/api/activity.go @@ -87,6 +87,11 @@ type ActivityUserAuthSignUpPayload struct { IP string `json:"ip"` } +type ActivityMemoCreatePayload struct { + Content string `json:"content"` + Visibility string `json:"visibility"` +} + type ActivityShortcutCreatePayload struct { Title string `json:"title"` Payload string `json:"payload"` diff --git a/server/memo.go b/server/memo.go index e00b27a3..3cf3e9ab 100644 --- a/server/memo.go +++ b/server/memo.go @@ -9,9 +9,9 @@ import ( "strings" "time" + "github.com/pkg/errors" "github.com/usememos/memos/api" "github.com/usememos/memos/common" - metric "github.com/usememos/memos/plugin/metrics" "github.com/labstack/echo/v4" ) @@ -60,9 +60,9 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to create memo").SetInternal(err) } - s.Collector.Collect(ctx, &metric.Metric{ - Name: "memo created", - }) + if err := s.createMemoCreateActivity(c, memo); err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, "Failed to create activity").SetInternal(err) + } for _, resourceID := range memoCreate.ResourceIDList { if _, err := s.Store.UpsertMemoResource(ctx, &api.MemoResourceUpsert{ @@ -565,3 +565,22 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { return c.JSON(http.StatusOK, true) }) } + +func (s *Server) createMemoCreateActivity(c echo.Context, memo *api.Memo) error { + ctx := c.Request().Context() + payload := api.ActivityMemoCreatePayload{ + Content: memo.Content, + Visibility: memo.Visibility.String(), + } + payloadStr, err := json.Marshal(payload) + if err != nil { + return errors.Wrap(err, "failed to marshal activity payload") + } + _, err = s.Store.CreateActivity(ctx, &api.ActivityCreate{ + CreatorID: memo.CreatorID, + Type: api.ActivityMemoCreate, + Level: api.ActivityInfo, + Payload: string(payloadStr), + }) + return err +} diff --git a/store/activity.go b/store/activity.go index 6a20c75e..fb266d16 100644 --- a/store/activity.go +++ b/store/activity.go @@ -38,6 +38,10 @@ func (raw *activityRaw) toActivity() *api.Activity { // CreateActivity creates an instance of Activity. func (s *Store) CreateActivity(ctx context.Context, create *api.ActivityCreate) (*api.Activity, error) { + if s.profile.Mode != "dev" { + return nil, nil + } + tx, err := s.db.BeginTx(ctx, nil) if err != nil { return nil, FormatError(err)