From 093cf2ab12a1f6bfa9629917101afffd2aeb8376 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Mon, 10 Apr 2023 21:56:02 +0200 Subject: [feature] Receive notification when followed account posts (if desired) (#1680) * start working on notifs for new posts * tidy up a bit * update swagger * carry over show reblogs + notify from follow req * test notify on status post * update column slice * dedupe update logic + add tests * fix own boosts not being timelined * avoid type check, passing unnecessary accounts * remove unnecessary 'inReplyToID' check * add a couple todo's for future db functions --- internal/db/bundb/relationship_follow_req.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'internal/db/bundb/relationship_follow_req.go') diff --git a/internal/db/bundb/relationship_follow_req.go b/internal/db/bundb/relationship_follow_req.go index ae398bf3b..4a6ec1ab8 100644 --- a/internal/db/bundb/relationship_follow_req.go +++ b/internal/db/bundb/relationship_follow_req.go @@ -21,6 +21,7 @@ import ( "context" "errors" "fmt" + "time" "github.com/superseriousbusiness/gotosocial/internal/db" "github.com/superseriousbusiness/gotosocial/internal/gtscontext" @@ -167,6 +168,26 @@ func (r *relationshipDB) PutFollowRequest(ctx context.Context, follow *gtsmodel. return nil } +func (r *relationshipDB) UpdateFollowRequest(ctx context.Context, followRequest *gtsmodel.FollowRequest, columns ...string) error { + followRequest.UpdatedAt = time.Now() + if len(columns) > 0 { + // If we're updating by column, ensure "updated_at" is included. + columns = append(columns, "updated_at") + } + + return r.state.Caches.GTS.FollowRequest().Store(followRequest, func() error { + if _, err := r.conn.NewUpdate(). + Model(followRequest). + Where("? = ?", bun.Ident("follow_request.id"), followRequest.ID). + Column(columns...). + Exec(ctx); err != nil { + return r.conn.ProcessError(err) + } + + return nil + }) +} + func (r *relationshipDB) AcceptFollowRequest(ctx context.Context, sourceAccountID string, targetAccountID string) (*gtsmodel.Follow, db.Error) { // Get original follow request. followReq, err := r.GetFollowRequest(ctx, sourceAccountID, targetAccountID) @@ -183,6 +204,8 @@ func (r *relationshipDB) AcceptFollowRequest(ctx context.Context, sourceAccountI TargetAccountID: targetAccountID, TargetAccount: followReq.TargetAccount, URI: followReq.URI, + ShowReblogs: followReq.ShowReblogs, + Notify: followReq.Notify, } // If the follow already exists, just -- cgit v1.2.3