46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package restgallery
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
"net/http"
|
|
|
|
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/handlers/rest"
|
|
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/pkg/templer"
|
|
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/web/pages"
|
|
)
|
|
|
|
const preloadCount = 6
|
|
|
|
func (h *Handler) gallery(w http.ResponseWriter, r *http.Request) {
|
|
imgs, err := h.srv.GetGallerySet(r.Context())
|
|
if err != nil {
|
|
slog.Error("could not get gallery set", "err", err)
|
|
rest.SendErr(w, err)
|
|
return
|
|
}
|
|
ctx := r.Context()
|
|
for i, image := range imgs.LG.Images {
|
|
if i > preloadCount {
|
|
break
|
|
}
|
|
ctx = templer.AppendHeader(ctx, fmt.Sprintf(`<link rel="preload" href="%s?w=800" as="image" />`, image.URL()))
|
|
}
|
|
|
|
h.r.RenderPage(ctx, w, r, pages.GallerySet(imgs))
|
|
}
|
|
|
|
func (h *Handler) image(w http.ResponseWriter, r *http.Request) {
|
|
uid := r.PathValue("image_uid")
|
|
|
|
slog.Debug("image from gallery", "uid", uid)
|
|
prev, next, err := h.srv.GetPrevAndNext(r.Context(), uid)
|
|
if err != nil {
|
|
slog.Error("could not get gallery", "err", err)
|
|
rest.SendErr(w, err)
|
|
return
|
|
}
|
|
|
|
h.r.RenderComponent(r.Context(), w, r, pages.GalleryImage(uid, next, prev))
|
|
}
|