diff --git a/pages/settings.go b/pages/settings.go index 47fd9c1..1556594 100644 --- a/pages/settings.go +++ b/pages/settings.go @@ -6,6 +6,8 @@ import ( "io" "net/http" "regexp" + "slices" + "strings" httpc "codeberg.org/vnpower/pixivfe/v2/core/http" session "codeberg.org/vnpower/pixivfe/v2/core/session" @@ -114,6 +116,28 @@ func setCookie(c *fiber.Ctx) error { return fmt.Errorf("Invalid Cookie Name: %s", key) } +func setRawCookie(c *fiber.Ctx) error { + raw := c.FormValue("raw") + lines := strings.Split(raw, "\n") + + for _, line := range lines { + sub := strings.Split(line, "=") + if len(sub) != 2 { + continue + } + + name := session.CookieName(sub[0]) + value := sub[1] + + if !slices.Contains(session.AllCookieNames, name) { + continue + } + + session.SetCookie(c, name, value) + } + return nil +} + func resetAll(c *fiber.Ctx) error { session.ClearAllCookies(c) return nil @@ -136,6 +160,7 @@ func SettingsPage(c *fiber.Ctx) error { func SettingsPost(c *fiber.Ctx) error { t := c.Params("type") + var noredirect bool = false var err error switch t { @@ -149,10 +174,14 @@ func SettingsPost(c *fiber.Ctx) error { err = resetAll(c) case "novelFontType": err = setNovelFontType(c) + noredirect = true case "novelViewMode": err = setNovelViewMode(c) + noredirect = true case "set-cookie": err = setCookie(c) + case "raw": + err = setRawCookie(c) default: err = errors.New("No such setting is available.") } @@ -161,7 +190,9 @@ func SettingsPost(c *fiber.Ctx) error { return err } - c.Redirect("/settings", http.StatusSeeOther) + if !noredirect { + c.Redirect("/settings", http.StatusSeeOther) + } return nil } diff --git a/views/css/style.css b/views/css/style.css index 3e1113d..57de696 100644 --- a/views/css/style.css +++ b/views/css/style.css @@ -238,6 +238,7 @@ textarea[readonly] { max-width: 800px; min-width: 460px; padding: 1.5rem; + margin: 0.5rem 0; } .form-field header { margin: 1.5rem 0; diff --git a/views/css/style.scss b/views/css/style.scss index ec07ce9..1b9ee54 100644 --- a/views/css/style.scss +++ b/views/css/style.scss @@ -278,6 +278,7 @@ textarea[readonly] { max-width: 800px; min-width: 460px; padding: 1.5rem; + margin: 0.5rem 0; header { margin: 1.5rem 0; diff --git a/views/pages/artwork.jet.html b/views/pages/artwork.jet.html index cc9ee4a..af6310d 100644 --- a/views/pages/artwork.jet.html +++ b/views/pages/artwork.jet.html @@ -18,14 +18,13 @@
The creator turned comments off
{{ else if Illust.Comments == 0 }}There are no comments yet
{{ else }} {{ range Illust.CommentsList }}
Current cookie values
Cookie list
Please note that some cookies here such as ShowArtR18, ShowArtR18G, and ShowArtAI are for features still under development.{{ range CookieList }}
{{.Key}}
@@ -21,9 +21,24 @@ +Raw settings
++ You can save your current cookie values to quickly set your settings on other compatible instances, + or if the current instance's cookies went expired.
+Invalid values will be ignored.
+ +