mirror of
https://codeberg.org/video-prize-ranch/rimgo.git
synced 2025-12-13 19:55:21 +00:00
next button for tagged posts (#169)
No previous button because that would be annoying to implement serverside with pagination etc. Closes #115 Fixed conflict with #154, #155, #156 Co-authored-by: video-prize-ranch <cb.8a3w5@simplelogin.co> Reviewed-on: https://codeberg.org/rimgo/rimgo/pulls/169 Reviewed-by: video-prize-ranch <video-prize-ranch@noreply.codeberg.org> Co-authored-by: orangix <orangix@noreply.codeberg.org> Co-committed-by: orangix <orangix@noreply.codeberg.org>
This commit is contained in:
committed by
video-prize-ranch
parent
7433265991
commit
927ea20fad
@@ -3,6 +3,7 @@ package pages
|
||||
import (
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"codeberg.org/rimgo/rimgo/api"
|
||||
@@ -10,6 +11,27 @@ import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
// Cursed function
|
||||
func nextInTag(client *api.Client, tagname, sort, page, I string) string {
|
||||
i, err := strconv.Atoi(I)
|
||||
if err != nil || i < 0 {
|
||||
return ""
|
||||
}
|
||||
tag, err := client.FetchTag(tagname, sort, page)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
if i >= len(tag.Posts)-1 {
|
||||
pageNumber, _ := strconv.Atoi(page)
|
||||
tagn, err := client.FetchTag(tagname, sort, strconv.Itoa(pageNumber+1))
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return tagn.Posts[0].Link
|
||||
}
|
||||
return tag.Posts[i+1].Link
|
||||
}
|
||||
|
||||
func HandlePost(c *fiber.Ctx) error {
|
||||
utils.SetHeaders(c)
|
||||
c.Set("X-Frame-Options", "DENY")
|
||||
@@ -56,8 +78,16 @@ func HandlePost(c *fiber.Ctx) error {
|
||||
}
|
||||
c.Set("Content-Security-Policy", csp)
|
||||
|
||||
var next string
|
||||
tagParam := strings.Split(c.Query("tag"), ".")
|
||||
if len(tagParam) == 4 {
|
||||
tag, sort, page, index := tagParam[0], tagParam[1], tagParam[2], tagParam[3]
|
||||
next = nextInTag(ApiClient, tag, sort, page, index)
|
||||
}
|
||||
|
||||
return c.Render("post", fiber.Map{
|
||||
"post": post,
|
||||
"next": next,
|
||||
"comments": comments,
|
||||
"nonce": nonce,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user