package view import ( "github.com/valyala/fasthttp" "git.sr.ht/~gabrielgio/img" "git.sr.ht/~gabrielgio/img/pkg/components/filesystem" "git.sr.ht/~gabrielgio/img/pkg/components/settings" "git.sr.ht/~gabrielgio/img/pkg/ext" ) type ( FileSystemView struct { controller filesystem.Controller settings settings.Repository } FilePage struct { Page *filesystem.Page ShowMode bool ShowOwner bool } ) func NewFileSystemView( controller filesystem.Controller, settingsRepository settings.Repository, ) *FileSystemView { return &FileSystemView{ controller: controller, settings: settingsRepository, } } func (self *FileSystemView) Index(ctx *fasthttp.RequestCtx) error { pathValue := string(ctx.FormValue("path")) page, err := self.controller.GetPage(pathValue) if err != nil { return err } settings, err := self.settings.Load(ctx) if err != nil { return err } err = img.Render(ctx, "fs.html", &img.HTMLView[*FilePage]{ Title: pathValue, Data: &FilePage{ Page: page, ShowMode: settings.ShowMode, ShowOwner: settings.ShowOwner, }, }) if err != nil { return err } return nil } func (self *FileSystemView) SetMyselfIn(r *ext.Router) { r.GET("/", self.Index) r.POST("/", self.Index) r.GET("/fs/", self.Index) r.POST("/fs/", self.Index) }