aboutsummaryrefslogtreecommitdiff
path: root/pkg/view/settings.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/view/settings.go')
-rw-r--r--pkg/view/settings.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/pkg/view/settings.go b/pkg/view/settings.go
new file mode 100644
index 0000000..746dee4
--- /dev/null
+++ b/pkg/view/settings.go
@@ -0,0 +1,53 @@
+package view
+
+import (
+ "github.com/valyala/fasthttp"
+
+ "git.sr.ht/~gabrielgio/img"
+ "git.sr.ht/~gabrielgio/img/pkg/components/settings"
+ "git.sr.ht/~gabrielgio/img/pkg/ext"
+)
+
+type SettingsView struct {
+ // there is not need to create a controller for this
+ repository settings.Repository
+}
+
+func NewSettingsView(respository settings.Repository) *SettingsView {
+ return &SettingsView{
+ repository: respository,
+ }
+}
+
+func (self *SettingsView) Index(ctx *fasthttp.RequestCtx) error {
+ s, err := self.repository.Load(ctx)
+ if err != nil {
+ return err
+ }
+ return img.Render(ctx, "settings.html", &img.HTMLView[*settings.Settings]{
+ Title: "Settings",
+ Data: s,
+ })
+}
+
+func (self *SettingsView) Save(ctx *fasthttp.RequestCtx) error {
+ var (
+ showMode = string(ctx.FormValue("showMode")) == "on"
+ showOwner = string(ctx.FormValue("showOwner")) == "on"
+ )
+
+ err := self.repository.Save(ctx, &settings.Settings{
+ ShowMode: showMode,
+ ShowOwner: showOwner,
+ })
+ if err != nil {
+ return err
+ }
+
+ return self.Index(ctx)
+}
+
+func (self *SettingsView) SetMyselfIn(r *ext.Router) {
+ r.GET("/settings/", self.Index)
+ r.POST("/settings/", self.Save)
+}