diff --git a/internal/db/user.go b/internal/db/user.go index 86db9f7..1958df4 100644 --- a/internal/db/user.go +++ b/internal/db/user.go @@ -305,6 +305,8 @@ type UserStyleDTO struct { AddedLineColor string `form:"addedlinecolor" json:"added_line_color" validate:"min=0,max=7"` GitLineColor string `form:"gitlinecolor" json:"git_line_color" validate:"min=0,max=7"` Theme string `form:"theme" json:"theme" validate:"oneof=light dark auto"` + DefaultSort string `form:"defaultsort" json:"default_sort" validate:"omitempty,oneof=created updated"` + DefaultOrder string `form:"defaultorder" json:"default_order" validate:"omitempty,oneof=asc desc"` } func (dto *UserStyleDTO) ToJson() string { diff --git a/internal/i18n/locales/en-US.yml b/internal/i18n/locales/en-US.yml index b2f76b9..749964b 100644 --- a/internal/i18n/locales/en-US.yml +++ b/internal/i18n/locales/en-US.yml @@ -189,6 +189,12 @@ settings.style.theme: Theme settings.style.theme-light: Light settings.style.theme-dark: Dark settings.style.theme-auto: Auto +settings.style.default-sort: Default sort order +settings.style.default-sort-created: Created date +settings.style.default-sort-updated: Updated date +settings.style.default-order: Default order direction +settings.style.default-order-desc: Newest first +settings.style.default-order-asc: Oldest first settings.create-token: Create access token settings.create-token-help: Access tokens can be used to access the API settings.token-name: Name diff --git a/internal/web/handlers/gist/all.go b/internal/web/handlers/gist/all.go index 92e7853..88bca4e 100644 --- a/internal/web/handlers/gist/all.go +++ b/internal/web/handlers/gist/all.go @@ -23,20 +23,34 @@ func AllGists(ctx *context.Context) error { pageInt := handlers.GetPage(ctx) sort := "created" - sortText := ctx.TrH("gist.list.sort-by-created") order := "desc" - orderText := ctx.TrH("gist.list.order-by-desc") + + if userLogged != nil { + if style := userLogged.GetStyle(); style != nil { + if style.DefaultSort == "updated" { + sort = "updated" + } + if style.DefaultOrder == "asc" { + order = "asc" + } + } + } if ctx.QueryParam("sort") == "updated" { sort = "updated" - sortText = ctx.TrH("gist.list.sort-by-updated") + } else if ctx.QueryParam("sort") == "created" { + sort = "created" } if ctx.QueryParam("order") == "asc" { order = "asc" - orderText = ctx.TrH("gist.list.order-by-asc") + } else if ctx.QueryParam("order") == "desc" { + order = "desc" } + sortText := ctx.TrH("gist.list.sort-by-" + sort) + orderText := ctx.TrH("gist.list.order-by-" + order) + pagination := &handlers.PaginationParams{ Sort: sort, Order: order, diff --git a/templates/pages/settings_style.html b/templates/pages/settings_style.html index 7223138..f4a445d 100644 --- a/templates/pages/settings_style.html +++ b/templates/pages/settings_style.html @@ -113,6 +113,34 @@ +

+ {{ .locale.Tr "settings.style.default-sort" }} +

+
+
+ + +
+
+ + +
+
+ +

+ {{ .locale.Tr "settings.style.default-order" }} +

+
+
+ + +
+
+ + +
+
+ {{ .csrfHtml }}