summaryrefslogtreecommitdiff
path: root/internal/util/timeline.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2022-07-13 09:57:47 +0200
committerLibravatar GitHub <noreply@github.com>2022-07-13 09:57:47 +0200
commit6418307c64da236a0268f4496f793d982e128ad0 (patch)
tree9c781c812697412936d671e0e42272dce8cf2d78 /internal/util/timeline.go
parent[chore] improved router logging, recovery and error handling (#705) (diff)
downloadgotosocial-6418307c64da236a0268f4496f793d982e128ad0.tar.xz
[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'
Diffstat (limited to 'internal/util/timeline.go')
-rw-r--r--internal/util/timeline.go23
1 files changed, 18 insertions, 5 deletions
diff --git a/internal/util/timeline.go b/internal/util/timeline.go
index 929464add..bdb0f3f03 100644
--- a/internal/util/timeline.go
+++ b/internal/util/timeline.go
@@ -61,12 +61,15 @@ func PackageTimelineableResponse(params TimelineableResponseParams) (*apimodel.T
Items: params.Items,
}
- // prepare the next and previous links
if len(params.Items) != 0 {
protocol := config.GetProtocol()
host := config.GetHost()
- nextRaw := fmt.Sprintf("limit=%d&%s=%s", params.Limit, params.NextMaxIDKey, params.NextMaxIDValue)
+ // next
+ nextRaw := params.NextMaxIDKey + "=" + params.NextMaxIDValue
+ if params.Limit != 0 {
+ nextRaw = fmt.Sprintf("limit=%d&", params.Limit) + nextRaw
+ }
for _, p := range params.ExtraQueryParams {
nextRaw = nextRaw + "&" + p
}
@@ -76,9 +79,14 @@ func PackageTimelineableResponse(params TimelineableResponseParams) (*apimodel.T
Path: params.Path,
RawQuery: nextRaw,
}
- next := fmt.Sprintf("<%s>; rel=\"next\"", nextLink.String())
+ nextLinkString := nextLink.String()
+ timelineResponse.NextLink = nextLinkString
- prevRaw := fmt.Sprintf("limit=%d&%s=%s", params.Limit, params.PrevMinIDKey, params.PrevMinIDValue)
+ // prev
+ prevRaw := params.PrevMinIDKey + "=" + params.PrevMinIDValue
+ if params.Limit != 0 {
+ prevRaw = fmt.Sprintf("limit=%d&", params.Limit) + prevRaw
+ }
for _, p := range params.ExtraQueryParams {
prevRaw = prevRaw + "&" + p
}
@@ -88,7 +96,12 @@ func PackageTimelineableResponse(params TimelineableResponseParams) (*apimodel.T
Path: params.Path,
RawQuery: prevRaw,
}
- prev := fmt.Sprintf("<%s>; rel=\"prev\"", prevLink.String())
+ prevLinkString := prevLink.String()
+ timelineResponse.PrevLink = prevLinkString
+
+ // link header
+ next := fmt.Sprintf("<%s>; rel=\"next\"", nextLinkString)
+ prev := fmt.Sprintf("<%s>; rel=\"prev\"", prevLinkString)
timelineResponse.LinkHeader = next + ", " + prev
}