diff options
author | 2024-09-23 14:42:19 +0200 | |
---|---|---|
committer | 2024-09-23 14:42:19 +0200 | |
commit | 1ce854358def5f04b7c3b73418ab56bb58512634 (patch) | |
tree | 94d827b90e435c88367d080f53b63ee2285905d6 /internal/processing/status/fave.go | |
parent | [chore] add nometrics build tagging to metrics API endpoint (#3331) (diff) | |
download | gotosocial-1ce854358def5f04b7c3b73418ab56bb58512634.tar.xz |
[feature] Show info for pending replies, allow implicit accept of pending replies (#3322)
* [feature] Allow implicit accept of pending replies
* update wording
Diffstat (limited to 'internal/processing/status/fave.go')
-rw-r--r-- | internal/processing/status/fave.go | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/internal/processing/status/fave.go b/internal/processing/status/fave.go index 497c4d465..defc59af0 100644 --- a/internal/processing/status/fave.go +++ b/internal/processing/status/fave.go @@ -31,6 +31,7 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/log" "github.com/superseriousbusiness/gotosocial/internal/messages" "github.com/superseriousbusiness/gotosocial/internal/uris" + "github.com/superseriousbusiness/gotosocial/internal/util" ) func (p *Processor) getFaveableStatus( @@ -138,8 +139,6 @@ func (p *Processor) FaveCreate( pendingApproval = false } - status.PendingApproval = &pendingApproval - // Create a new fave, marking it // as pending approval if necessary. faveID := id.NewULID() @@ -157,7 +156,7 @@ func (p *Processor) FaveCreate( } if err := p.state.DB.PutStatusFave(ctx, gtsFave); err != nil { - err = fmt.Errorf("FaveCreate: error putting fave in database: %w", err) + err = gtserror.Newf("db error putting fave: %w", err) return nil, gtserror.NewErrorInternalError(err) } @@ -170,6 +169,23 @@ func (p *Processor) FaveCreate( Target: status.Account, }) + // If the fave target status replies to a status + // that we own, and has a pending interaction + // request, use the fave as an implicit accept. + implicitlyAccepted, errWithCode := p.implicitlyAccept(ctx, + requester, status, + ) + if errWithCode != nil { + return nil, errWithCode + } + + // If we ended up implicitly accepting, mark the + // target status as no longer pending approval so + // it's serialized properly via the API. + if implicitlyAccepted { + status.PendingApproval = util.Ptr(false) + } + return p.c.GetAPIStatus(ctx, requester, status) } |