aboutsummaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorr <r@freesoftwareextremist.com>2019-12-15 06:55:13 +0000
committerr <r@freesoftwareextremist.com>2019-12-15 06:55:13 +0000
commit51a4b16af518fde883df50f7f627fda21c18065e (patch)
tree26cc0c66a85db79bc0fc25d102998bf297329d28 /service
parente129ea922e6cbe8966f9a9f0b1c6c94401516c61 (diff)
downloadbloat-51a4b16af518fde883df50f7f627fda21c18065e.tar.gz
bloat-51a4b16af518fde883df50f7f627fda21c18065e.zip
Fix prev pagination
Diffstat (limited to 'service')
-rw-r--r--service/service.go32
1 files changed, 24 insertions, 8 deletions
diff --git a/service/service.go b/service/service.go
index 15dab5d..e502b65 100644
--- a/service/service.go
+++ b/service/service.go
@@ -207,10 +207,9 @@ func (svc *service) ServeTimelinePage(ctx context.Context, client io.Writer,
var nextLink, prevLink string
var pg = mastodon.Pagination{
- MaxID: maxID,
- SinceID: sinceID,
- MinID: minID,
- Limit: 20,
+ MaxID: maxID,
+ MinID: minID,
+ Limit: 20,
}
statuses, err := c.GetTimelineHome(ctx, &pg)
@@ -218,14 +217,31 @@ func (svc *service) ServeTimelinePage(ctx context.Context, client io.Writer,
return err
}
+ if len(maxID) > 0 && len(statuses) > 0 {
+ hasPrev = true
+ prevLink = fmt.Sprintf("/timeline?min_id=%s", statuses[0].ID)
+ }
+ if len(minID) > 0 && len(pg.MinID) > 0 {
+ newStatuses, err := c.GetTimelineHome(ctx, &mastodon.Pagination{MinID: pg.MinID, Limit: 20})
+ if err != nil {
+ return err
+ }
+ newStatusesLen := len(newStatuses)
+ if newStatusesLen == 20 {
+ hasPrev = true
+ prevLink = fmt.Sprintf("/timeline?min_id=%s", pg.MinID)
+ } else {
+ i := 20 - newStatusesLen - 1
+ if len(statuses) > i {
+ hasPrev = true
+ prevLink = fmt.Sprintf("/timeline?min_id=%s", statuses[i].ID)
+ }
+ }
+ }
if len(pg.MaxID) > 0 {
hasNext = true
nextLink = fmt.Sprintf("/timeline?max_id=%s", pg.MaxID)
}
- if len(pg.SinceID) > 0 {
- hasPrev = true
- prevLink = fmt.Sprintf("/timeline?since_id=%s", pg.SinceID)
- }
data := renderer.NewTimelinePageTemplateData(statuses, hasNext, nextLink, hasPrev, prevLink)
err = svc.renderer.RenderTimelinePage(ctx, client, data)