mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 20:22:25 -05:00 
			
		
		
		
	[feature] /api/v1/follow_requests/outgoing (#4224)
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl> # Description This pull request adds a new endpoint which returns a list of pending follow requests requested by the user. The test is adapted from the GET /api/v1/follow_requests test. ## Checklist - [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md). - [ ] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat. - [x] I/we have not leveraged AI to create the proposed changes. - [x] I/we have performed a self-review of added code. - [x] I/we have written code that is legible and maintainable by others. - [x] I/we have commented the added code, particularly in hard-to-understand areas. - [x] I/we have made any necessary changes to documentation. - [x] I/we have added tests that cover new code. - [x] I/we have run tests and they pass locally with the changes. - [x] I/we have run `go fmt ./...` and `golangci-lint run`. Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4224 Co-authored-by: nicole mikołajczyk <git@mkljczk.pl> Co-committed-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
		
					parent
					
						
							
								ee180a2359
							
						
					
				
			
			
				commit
				
					
						5097e6d278
					
				
			
		
					 5 changed files with 574 additions and 0 deletions
				
			
		|  | @ -117,3 +117,42 @@ func (p *Processor) FollowRequestsGet(ctx context.Context, requestingAccount *gt | |||
| 		Prev:  page.Prev(lo, hi), | ||||
| 	}), nil | ||||
| } | ||||
| 
 | ||||
| // OutgoingFollowRequestsGet fetches a list of the accounts with a pending follow request originating from the given requestingAccount (the currently authorized account). | ||||
| func (p *Processor) OutgoingFollowRequestsGet(ctx context.Context, requestingAccount *gtsmodel.Account, page *paging.Page) (*apimodel.PageableResponse, gtserror.WithCode) { | ||||
| 	// Fetch follow requests originating from the given requesting account model. | ||||
| 	followRequests, err := p.state.DB.GetAccountFollowRequesting(ctx, requestingAccount.ID, page) | ||||
| 	if err != nil && !errors.Is(err, db.ErrNoEntries) { | ||||
| 		return nil, gtserror.NewErrorInternalError(err) | ||||
| 	} | ||||
| 
 | ||||
| 	// Check for empty response. | ||||
| 	count := len(followRequests) | ||||
| 	if count == 0 { | ||||
| 		return paging.EmptyResponse(), nil | ||||
| 	} | ||||
| 
 | ||||
| 	// Get the lowest and highest | ||||
| 	// ID values, used for paging. | ||||
| 	lo := followRequests[count-1].ID | ||||
| 	hi := followRequests[0].ID | ||||
| 
 | ||||
| 	// Func to fetch follow source at index. | ||||
| 	getIdx := func(i int) *gtsmodel.Account { | ||||
| 		return followRequests[i].TargetAccount | ||||
| 	} | ||||
| 
 | ||||
| 	// Get a filtered slice of public API account models. | ||||
| 	items := p.c.GetVisibleAPIAccountsPaged(ctx, | ||||
| 		requestingAccount, | ||||
| 		getIdx, | ||||
| 		count, | ||||
| 	) | ||||
| 
 | ||||
| 	return paging.PackageResponse(paging.ResponseParams{ | ||||
| 		Items: items, | ||||
| 		Path:  "/api/v1/follow_requests/outgoing", | ||||
| 		Next:  page.Next(lo, hi), | ||||
| 		Prev:  page.Prev(lo, hi), | ||||
| 	}), nil | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue