Sort of implement personal feeds
This commit is contained in:
parent
1c216e415d
commit
8d2e008125
6 changed files with 47 additions and 5 deletions
|
@ -685,6 +685,7 @@ func handleCreate(w http.ResponseWriter, r *http.Request, object map[string]any)
|
|||
log := hlog.FromRequest(r)
|
||||
activity := translators.ActivityCreate{}
|
||||
err := mapstructure.Decode(object, &activity)
|
||||
targetUserId := r.PathValue("id")
|
||||
if err != nil {
|
||||
log.Error().
|
||||
Err(err).
|
||||
|
@ -704,7 +705,7 @@ func handleCreate(w http.ResponseWriter, r *http.Request, object map[string]any)
|
|||
}
|
||||
switch val := activity.Object.(type) {
|
||||
case string:
|
||||
actor, err := dbgen.User.GetById(r.PathValue("id"))
|
||||
actor, err := dbgen.User.GetById(targetUserId)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to get local actor for importing targeted note")
|
||||
_ = webutils.ProblemDetailsStatusOnly(w, http.StatusInternalServerError)
|
||||
|
@ -779,6 +780,13 @@ func handleCreate(w http.ResponseWriter, r *http.Request, object map[string]any)
|
|||
dbNote.RepliesTo = sql.NullString{Valid: true, String: replyUrl}
|
||||
}
|
||||
}
|
||||
feed, err := dbgen.Feed.Where(dbgen.Feed.OwnerId.Eq(targetUserId), dbgen.Feed.IsDefault.Is(true)).
|
||||
First()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to get feed for targeted user inbox")
|
||||
_ = webutils.ProblemDetailsStatusOnly(w, http.StatusInternalServerError)
|
||||
return false
|
||||
}
|
||||
tx := dbgen.Q.Begin()
|
||||
err = tx.Note.Create(&dbNote)
|
||||
if err != nil {
|
||||
|
@ -800,6 +808,17 @@ func handleCreate(w http.ResponseWriter, r *http.Request, object map[string]any)
|
|||
_ = webutils.ProblemDetailsStatusOnly(w, http.StatusInternalServerError)
|
||||
return false
|
||||
}
|
||||
err = tx.NoteToFeed.Create(&models.NoteToFeed{
|
||||
Reason: string(models.FeedAppearanceReasonFollowUser),
|
||||
NoteId: dbNote.ID,
|
||||
FeedId: uint64(feed.ID),
|
||||
})
|
||||
if err != nil {
|
||||
_ = tx.Rollback()
|
||||
log.Error().Err(err).Any("note", dbNote).Msg("Failed to create note to feed relation in db")
|
||||
_ = webutils.ProblemDetailsStatusOnly(w, http.StatusInternalServerError)
|
||||
return false
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Any("note", dbNote).Msg("Failed to submit note creation in db")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue