diff options
Diffstat (limited to 'internal/typeutils/internaltofrontend.go')
-rw-r--r-- | internal/typeutils/internaltofrontend.go | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go index 94f2bcda4..fa704a5bb 100644 --- a/internal/typeutils/internaltofrontend.go +++ b/internal/typeutils/internaltofrontend.go @@ -838,14 +838,6 @@ func (c *Converter) statusToFrontend( return nil, gtserror.Newf("error counting faves: %w", err) } - interacts, err := c.interactionsWithStatusForAccount(ctx, s, requestingAccount) - if err != nil { - log.Errorf(ctx, "error getting interactions for status %s for account %s: %v", s.ID, requestingAccount.ID, err) - - // Ensure a non nil object - interacts = &statusInteractions{} - } - apiAttachments, err := c.convertAttachmentsToAPIAttachments(ctx, s.Attachments, s.AttachmentIDs) if err != nil { log.Errorf(ctx, "error converting status attachments: %v", err) @@ -880,11 +872,6 @@ func (c *Converter) statusToFrontend( RepliesCount: repliesCount, ReblogsCount: reblogsCount, FavouritesCount: favesCount, - Favourited: interacts.Faved, - Bookmarked: interacts.Bookmarked, - Muted: interacts.Muted, - Reblogged: interacts.Reblogged, - Pinned: interacts.Pinned, Content: s.Content, Reblog: nil, // Set below. Application: nil, // Set below. @@ -941,6 +928,34 @@ func (c *Converter) statusToFrontend( } } + // Status interactions. + // + // Take from boosted status if set, + // otherwise take from status itself. + if apiStatus.Reblog != nil { + apiStatus.Favourited = apiStatus.Reblog.Favourited + apiStatus.Bookmarked = apiStatus.Reblog.Bookmarked + apiStatus.Muted = apiStatus.Reblog.Muted + apiStatus.Reblogged = apiStatus.Reblog.Reblogged + apiStatus.Pinned = apiStatus.Reblog.Pinned + } else { + interacts, err := c.interactionsWithStatusForAccount(ctx, s, requestingAccount) + if err != nil { + log.Errorf(ctx, + "error getting interactions for status %s for account %s: %v", + s.ID, requestingAccount.ID, err, + ) + + // Ensure non-nil object. + interacts = new(statusInteractions) + } + apiStatus.Favourited = interacts.Favourited + apiStatus.Bookmarked = interacts.Bookmarked + apiStatus.Muted = interacts.Muted + apiStatus.Reblogged = interacts.Reblogged + apiStatus.Pinned = interacts.Pinned + } + // If web URL is empty for whatever // reason, provide AP URI as fallback. if s.URL == "" { |