Store session defaults centrally

This commit is contained in:
Kovid Goyal 2015-11-04 15:53:56 +05:30
parent 4476e0f0ce
commit 08fa7a72c1
2 changed files with 16 additions and 6 deletions

View File

@ -7,11 +7,11 @@ def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', q
keys = Object.keys(query)
has_query = False
if keys.length:
for i, k in enumerate(keys):
for k in keys:
val = query[k]
if val is undefined or val is None:
continue
path += ('?' if i == 0 else '&') + window.encodeURIComponent(k) + '=' + window.encodeURIComponent(val.toString())
path += ('&' if has_query else '?') + window.encodeURIComponent(k) + '=' + window.encodeURIComponent(val.toString())
has_query = True
if bypass_cache:
path += ('&' if has_query else '?') + Date().getTime()

View File

@ -1,6 +1,11 @@
# vim:fileencoding=utf-8
# License: GPL v3 Copyright: 2015, Kovid Goyal <kovid at kovidgoyal.net>
defaults = {
'view_mode': 'cover_grid',
'sort': 'date.desc',
}
def storage_available(which):
which = which or 'localStorage'
try:
@ -51,19 +56,23 @@ class SessionData:
self.has_overflow = False
def get(self, key, defval):
if defval is undefined:
defval = None
if self.has_overflow:
ans = self.overflow_storage[key]
if ans is undefined:
ans = self.storage.getItem(key)
else:
ans = self.storage.getItem(key)
if ans is undefined:
if ans is undefined or ans is None:
if defval is undefined:
defval = None
return defval
return JSON.parse(ans)
def set(self, key, value):
if value is None:
self.storage.removeItem(key)
v'delete self.overflow_storage[key]'
return True
value = JSON.stringify(value)
try:
self.storage.setItem(key, value)
@ -89,9 +98,10 @@ class UserSessionData(SessionData):
SessionData.__init__(self)
def get(self, key, defval):
if defval is undefined:
defval = defaults[key]
return SessionData.get(self, (self.prefix + key), defval)
def set(self, key, value):
# TODO: Send updated data to server if self.has_user
return SessionData.set(self, (self.prefix + key), value)