mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-17 16:33:04 -06:00
[feature] Add back/next buttons to profiles for paging through statuses (#708)
* add GetAccountWebStatuses to db * add WebStatusesGet func to processor * don't add limit to next/prev links if 0 * take query params for next/prev statuses * add separate next + prev links for convenience * show 'nothing here' message if no statuses exist * add back / next links to profiles * allow paging down only * go fmt ./... * 'recent public toots' -> 'latest public toots'
This commit is contained in:
parent
6934ae378a
commit
6418307c64
11 changed files with 183 additions and 36 deletions
|
|
@ -84,3 +84,45 @@ func (p *processor) StatusesGet(ctx context.Context, requestingAccount *gtsmodel
|
|||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (p *processor) WebStatusesGet(ctx context.Context, targetAccountID string, maxID string) (*apimodel.TimelineResponse, gtserror.WithCode) {
|
||||
acct, err := p.db.GetAccountByID(ctx, targetAccountID)
|
||||
if err != nil {
|
||||
if err == db.ErrNoEntries {
|
||||
err := fmt.Errorf("account %s not found in the db, not getting web statuses for it", targetAccountID)
|
||||
return nil, gtserror.NewErrorNotFound(err)
|
||||
}
|
||||
return nil, gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
|
||||
if acct.Domain != "" {
|
||||
err := fmt.Errorf("account %s was not a local account, not getting web statuses for it", targetAccountID)
|
||||
return nil, gtserror.NewErrorNotFound(err)
|
||||
}
|
||||
|
||||
statuses, err := p.db.GetAccountWebStatuses(ctx, targetAccountID, 10, maxID)
|
||||
if err != nil {
|
||||
if err == db.ErrNoEntries {
|
||||
return util.EmptyTimelineResponse(), nil
|
||||
}
|
||||
return nil, gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
|
||||
timelineables := []timeline.Timelineable{}
|
||||
for _, i := range statuses {
|
||||
apiStatus, err := p.tc.StatusToAPIStatus(ctx, i, nil)
|
||||
if err != nil {
|
||||
return nil, gtserror.NewErrorInternalError(fmt.Errorf("error converting status to api: %s", err))
|
||||
}
|
||||
|
||||
timelineables = append(timelineables, apiStatus)
|
||||
}
|
||||
|
||||
return util.PackageTimelineableResponse(util.TimelineableResponseParams{
|
||||
Items: timelineables,
|
||||
Path: "/@" + acct.Username,
|
||||
NextMaxIDValue: timelineables[len(timelineables)-1].GetID(),
|
||||
PrevMinIDValue: timelineables[0].GetID(),
|
||||
ExtraQueryParams: []string{},
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue