mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 09:02:25 -05:00 
			
		
		
		
	[bugfix] Fix minor API issue w/ boosted statuses (#2846)
This commit is contained in:
		
					parent
					
						
							
								6de5717d7f
							
						
					
				
			
			
				commit
				
					
						8cf685fbe9
					
				
			
		
					 3 changed files with 34 additions and 15 deletions
				
			
		|  | @ -100,6 +100,8 @@ func (suite *StatusBoostTestSuite) TestPostBoost() { | ||||||
| 	suite.Len(statusReply.Reblog.MediaAttachments, 1) | 	suite.Len(statusReply.Reblog.MediaAttachments, 1) | ||||||
| 	suite.Len(statusReply.Reblog.Tags, 1) | 	suite.Len(statusReply.Reblog.Tags, 1) | ||||||
| 	suite.Len(statusReply.Reblog.Emojis, 1) | 	suite.Len(statusReply.Reblog.Emojis, 1) | ||||||
|  | 	suite.True(statusReply.Reblogged) | ||||||
|  | 	suite.True(statusReply.Reblog.Reblogged) | ||||||
| 	suite.Equal("superseriousbusiness", statusReply.Reblog.Application.Name) | 	suite.Equal("superseriousbusiness", statusReply.Reblog.Application.Name) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -165,6 +167,8 @@ func (suite *StatusBoostTestSuite) TestPostBoostOwnFollowersOnly() { | ||||||
| 	suite.Empty(responseStatus.Reblog.MediaAttachments) | 	suite.Empty(responseStatus.Reblog.MediaAttachments) | ||||||
| 	suite.Empty(responseStatus.Reblog.Tags) | 	suite.Empty(responseStatus.Reblog.Tags) | ||||||
| 	suite.Empty(responseStatus.Reblog.Emojis) | 	suite.Empty(responseStatus.Reblog.Emojis) | ||||||
|  | 	suite.True(responseStatus.Reblogged) | ||||||
|  | 	suite.True(responseStatus.Reblog.Reblogged) | ||||||
| 	suite.Equal("really cool gts application", responseStatus.Reblog.Application.Name) | 	suite.Equal("really cool gts application", responseStatus.Reblog.Application.Name) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -838,14 +838,6 @@ func (c *Converter) statusToFrontend( | ||||||
| 		return nil, gtserror.Newf("error counting faves: %w", err) | 		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) | 	apiAttachments, err := c.convertAttachmentsToAPIAttachments(ctx, s.Attachments, s.AttachmentIDs) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Errorf(ctx, "error converting status attachments: %v", err) | 		log.Errorf(ctx, "error converting status attachments: %v", err) | ||||||
|  | @ -880,11 +872,6 @@ func (c *Converter) statusToFrontend( | ||||||
| 		RepliesCount:       repliesCount, | 		RepliesCount:       repliesCount, | ||||||
| 		ReblogsCount:       reblogsCount, | 		ReblogsCount:       reblogsCount, | ||||||
| 		FavouritesCount:    favesCount, | 		FavouritesCount:    favesCount, | ||||||
| 		Favourited:         interacts.Faved, |  | ||||||
| 		Bookmarked:         interacts.Bookmarked, |  | ||||||
| 		Muted:              interacts.Muted, |  | ||||||
| 		Reblogged:          interacts.Reblogged, |  | ||||||
| 		Pinned:             interacts.Pinned, |  | ||||||
| 		Content:            s.Content, | 		Content:            s.Content, | ||||||
| 		Reblog:             nil, // Set below. | 		Reblog:             nil, // Set below. | ||||||
| 		Application:        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 | 	// If web URL is empty for whatever | ||||||
| 	// reason, provide AP URI as fallback. | 	// reason, provide AP URI as fallback. | ||||||
| 	if s.URL == "" { | 	if s.URL == "" { | ||||||
|  |  | ||||||
|  | @ -36,7 +36,7 @@ import ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type statusInteractions struct { | type statusInteractions struct { | ||||||
| 	Faved      bool | 	Favourited bool | ||||||
| 	Muted      bool | 	Muted      bool | ||||||
| 	Bookmarked bool | 	Bookmarked bool | ||||||
| 	Reblogged  bool | 	Reblogged  bool | ||||||
|  | @ -51,7 +51,7 @@ func (c *Converter) interactionsWithStatusForAccount(ctx context.Context, s *gts | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return nil, fmt.Errorf("error checking if requesting account has faved status: %s", err) | 			return nil, fmt.Errorf("error checking if requesting account has faved status: %s", err) | ||||||
| 		} | 		} | ||||||
| 		si.Faved = faved | 		si.Favourited = faved | ||||||
| 
 | 
 | ||||||
| 		reblogged, err := c.state.DB.IsStatusBoostedBy(ctx, s.ID, requestingAccount.ID) | 		reblogged, err := c.state.DB.IsStatusBoostedBy(ctx, s.ID, requestingAccount.ID) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue