Started working on the view upload page

This commit is contained in:
Leon Mika 2026-03-02 22:26:40 +11:00
parent 0a9af9cde8
commit 48f39133d7
18 changed files with 327 additions and 45 deletions

View file

@ -1,8 +1,15 @@
package handlers
import (
"bufio"
"io"
"log"
"net/http"
"strconv"
"github.com/gofiber/fiber/v3"
"lmika.dev/lmika/weiro/services/uploads"
"lmika.dev/pkg/modash/moslice"
)
type UploadsHandler struct {
@ -10,7 +17,65 @@ type UploadsHandler struct {
}
func (uh UploadsHandler) Index(c fiber.Ctx) error {
return c.Render("uploads/index", nil)
uploads, err := uh.UploadsService.ListUploads(c.Context())
if err != nil {
return err
}
rows := moslice.Batch(uploads, 5)
return c.Render("uploads/index", fiber.Map{"uploads": rows})
}
func (uh UploadsHandler) Show(c fiber.Ctx) error {
uploadIDStr := c.Params("uploadID")
if uploadIDStr == "" {
return fiber.ErrBadRequest
}
uploadID, err := strconv.ParseInt(uploadIDStr, 10, 64)
if err != nil {
return fiber.ErrBadRequest
}
upload, err := uh.UploadsService.FetchUpload(c.Context(), uploadID)
if err != nil {
return err
}
return c.Render("uploads/show", fiber.Map{"upload": upload})
}
func (uh UploadsHandler) ShowRaw(c fiber.Ctx) error {
uploadIDStr := c.Params("uploadID")
if uploadIDStr == "" {
return fiber.ErrBadRequest
}
uploadID, err := strconv.ParseInt(uploadIDStr, 10, 64)
if err != nil {
return fiber.ErrBadRequest
}
upload, rwFn, err := uh.UploadsService.OpenUpload(c.Context(), uploadID)
if err != nil {
log.Print(err)
return err
}
c.Set("Content-Type", upload.MIMEType)
c.Status(http.StatusOK)
return c.SendStreamWriter(func(w *bufio.Writer) {
rw, err := rwFn()
if err != nil {
return
}
defer rw.Close()
_, err = io.Copy(w, rw)
if err != nil {
return
}
})
}
func (uh UploadsHandler) New(c fiber.Ctx) error {