summaryrefslogtreecommitdiff
path: root/internal/typeutils/internaltofrontend.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/typeutils/internaltofrontend.go')
-rw-r--r--internal/typeutils/internaltofrontend.go41
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 == "" {