diff options
Diffstat (limited to 'internal/processing/followrequest.go')
-rw-r--r-- | internal/processing/followrequest.go | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/internal/processing/followrequest.go b/internal/processing/followrequest.go index 74bffd693..20df80f57 100644 --- a/internal/processing/followrequest.go +++ b/internal/processing/followrequest.go @@ -99,6 +99,45 @@ func (p *processor) FollowRequestAccept(ctx context.Context, auth *oauth.Auth, a return r, nil } -func (p *processor) FollowRequestDeny(ctx context.Context, auth *oauth.Auth) gtserror.WithCode { - return nil +func (p *processor) FollowRequestReject(ctx context.Context, auth *oauth.Auth, accountID string) (*apimodel.Relationship, gtserror.WithCode) { + followRequest, err := p.db.RejectFollowRequest(ctx, accountID, auth.Account.ID) + if err != nil { + return nil, gtserror.NewErrorNotFound(err) + } + + if followRequest.Account == nil { + a, err := p.db.GetAccountByID(ctx, followRequest.AccountID) + if err != nil { + return nil, gtserror.NewErrorInternalError(err) + } + followRequest.Account = a + } + + if followRequest.TargetAccount == nil { + a, err := p.db.GetAccountByID(ctx, followRequest.TargetAccountID) + if err != nil { + return nil, gtserror.NewErrorInternalError(err) + } + followRequest.TargetAccount = a + } + + p.fromClientAPI <- messages.FromClientAPI{ + APObjectType: ap.ActivityFollow, + APActivityType: ap.ActivityReject, + GTSModel: followRequest, + OriginAccount: followRequest.Account, + TargetAccount: followRequest.TargetAccount, + } + + gtsR, err := p.db.GetRelationship(ctx, auth.Account.ID, accountID) + if err != nil { + return nil, gtserror.NewErrorInternalError(err) + } + + r, err := p.tc.RelationshipToAPIRelationship(ctx, gtsR) + if err != nil { + return nil, gtserror.NewErrorInternalError(err) + } + + return r, nil } |