lens @ b8b6d3037c524575f140650ac243c16df6a98a92

 1package view
 2
 3import (
 4	"github.com/valyala/fasthttp"
 5
 6	"git.sr.ht/~gabrielgio/img/pkg/database/repository"
 7	"git.sr.ht/~gabrielgio/img/pkg/ext"
 8	"git.sr.ht/~gabrielgio/img/pkg/service"
 9	"git.sr.ht/~gabrielgio/img/templates"
10)
11
12type (
13	FileSystemView struct {
14		fsService service.FileSystemController
15		settings  repository.SettingsRepository
16	}
17	FilePage struct {
18		Page      *service.Page
19		ShowMode  bool
20		ShowOwner bool
21	}
22)
23
24func NewFileSystemView(
25	controller service.FileSystemController,
26	settingsRepository repository.SettingsRepository,
27) *FileSystemView {
28	return &FileSystemView{
29		fsService: controller,
30		settings:  settingsRepository,
31	}
32}
33
34func (self *FileSystemView) Index(ctx *fasthttp.RequestCtx) error {
35	pathValue := string(ctx.FormValue("path"))
36	token := ext.GetTokenFromCtx(ctx)
37
38	page, err := self.fsService.GetPage(ctx, token.UserID, pathValue)
39	if err != nil {
40		return err
41	}
42
43	settings, err := self.settings.Load(ctx)
44	if err != nil {
45		return err
46	}
47
48	templates.WritePageTemplate(ctx, &templates.FilePage{
49		Page:      page,
50		ShowMode:  settings.ShowMode,
51		ShowOwner: settings.ShowOwner,
52	})
53
54	return nil
55}
56
57func (self *FileSystemView) SetMyselfIn(r *ext.Router) {
58	r.GET("/", self.Index)
59	r.POST("/", self.Index)
60	r.GET("/fs/", self.Index)
61	r.POST("/fs/", self.Index)
62}