[bugfix] Fix db error checking for int req: sql: no rows in result set (#4478)

Fixes `sql: no rows in result set` when trying to append approvedByURI to a reply that was sent impolitely and approved impolitely.

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4478
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Co-committed-by: tobi <tobi.smethurst@protonmail.com>
This commit is contained in:
tobi 2025-10-06 13:11:23 +02:00 committed by tobi
commit c6044d0142

View file

@ -2438,8 +2438,8 @@ func (c *Converter) InteractionReqToASAuthorization(
}
// appendASInteractionAuthorization is a utility function
// that sets `approvedBy`, and `likeAuthorization`,
// `replyAuthorization`, or `announceAuthorization`.
// that sets `approvedBy`, and (if possible) `likeAuthorization`,
// `replyAuthorization`, and/or `announceAuthorization`.
func (c *Converter) appendASInteractionAuthorization(
ctx context.Context,
approvedByURIStr string,
@ -2458,11 +2458,28 @@ func (c *Converter) appendASInteractionAuthorization(
gtscontext.SetBarebones(ctx),
approvedByURIStr,
)
if err != nil {
if err != nil && !errors.Is(err, db.ErrNoEntries) {
return gtserror.Newf("db error checking for int req: %w", err)
}
// Make sure it's actually accepted.
// If the interaction request is nil,
// that means we originally sent out
// the interaction request impolitely,
// and it was accepted impolitely.
// Ie., behavior from <= v0.20.0.
//
// If this is so, just set `approvedBy`
// to given approvedByURIStr and bail,
// as there's nothing else we can do.
if intReq == nil {
if wap, ok := t.(ap.WithApprovedBy); ok {
ap.SetApprovedBy(wap, approvedByURI)
}
return nil
}
// Make sure interaction request
// has actually been accepted.
if !intReq.IsAccepted() {
return gtserror.Newf(
"approvedByURIStr %s corresponded to not-accepted interaction request %s",