Store preferences in cookies, add config defaults

This commit is contained in:
Zed
2020-05-08 02:48:47 +02:00
parent 517d9144f6
commit 312ff78628
9 changed files with 109 additions and 109 deletions

View File

@@ -1,54 +1,15 @@
import strutils, sequtils, macros
import norm/sqlite
import tables
import types, prefs_impl
from config import get
from parsecfg import nil
import prefs_impl, types
export genUpdatePrefs
export genUpdatePrefs, genResetPrefs
template safeAddColumn(field: typedesc): untyped =
try: field.addColumn
except DbError: discard
var defaultPrefs*: Prefs
dbFromTypes("prefs.db", "", "", "", [Prefs])
proc updateDefaultPrefs*(cfg: parsecfg.Config) =
genDefaultPrefs()
withDb:
try:
createTables()
except DbError:
discard
safeAddColumn Prefs.theme
safeAddColumn Prefs.hidePins
safeAddColumn Prefs.hideReplies
safeAddColumn Prefs.infiniteScroll
safeAddColumn Prefs.replaceInstagram
proc getDefaultPrefs(cfg: Config): Prefs =
result = genDefaultPrefs()
result.replaceTwitter = cfg.hostname
result.theme = cfg.defaultTheme
proc cache*(prefs: var Prefs) =
withDb:
try:
doAssert prefs.id != 0
discard Prefs.getOne("id = ?", prefs.id)
prefs.update()
except AssertionError, KeyError:
prefs.insert()
proc getPrefs*(id: string; cfg: Config): Prefs =
if id.len == 0:
return getDefaultPrefs(cfg)
withDb:
try:
result.getOne("id = ?", id)
if result.theme.len == 0:
result.theme = cfg.defaultTheme
except KeyError:
result = getDefaultPrefs(cfg)
proc resetPrefs*(prefs: var Prefs; cfg: Config) =
var defPrefs = getDefaultPrefs(cfg)
defPrefs.id = prefs.id
cache(defPrefs)
prefs = defPrefs
proc getPrefs*(cookies: Table[string, string]): Prefs =
result = defaultPrefs
genCookiePrefs()