preferences.nim 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import strutils, uri, os, algorithm
  2. import jester
  3. import router_utils
  4. import ".."/[types]
  5. import ../views/[general, preferences]
  6. export preferences
  7. proc findThemes*(dir: string): seq[string] =
  8. for kind, path in walkDir(dir / "css" / "themes"):
  9. result.add path.splitFile.name.capitalizeAscii
  10. sort(result)
  11. proc createPrefRouter*(cfg: Config) =
  12. router preferences:
  13. template savePrefs(): untyped =
  14. setCookie("preferences", $prefs.id, daysForward(360), httpOnly=true, secure=cfg.useHttps)
  15. get "/settings":
  16. let html = renderPreferences(cookiePrefs(), refPath(), findThemes(cfg.staticDir))
  17. resp renderMain(html, request, cfg, "Preferences")
  18. get "/settings/@i?":
  19. redirect("/settings")
  20. post "/saveprefs":
  21. var prefs = cookiePrefs()
  22. genUpdatePrefs()
  23. savePrefs()
  24. redirect(refPath())
  25. post "/resetprefs":
  26. var prefs = cookiePrefs()
  27. resetPrefs(prefs, cfg)
  28. savePrefs()
  29. redirect($(parseUri("/settings") ? filterParams(request.params)))
  30. post "/enablehls":
  31. var prefs = cookiePrefs()
  32. prefs.hlsPlayback = true
  33. cache(prefs)
  34. savePrefs()
  35. redirect(refPath())