use cloned values from defaults as current value

This commit is contained in:
Kovid Goyal 2024-02-22 09:44:05 +05:30
parent aeb0fdc473
commit 4fb575d8fe
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 16 additions and 7 deletions

View File

@ -372,11 +372,14 @@ class UserSessionData(SessionData):
self.echo_changes = True
def defval(self, key):
return session_defaults()[key]
ans = session_defaults()[key]
if ans:
ans = window.structuredClone(ans)
return ans
def get(self, key, defval):
if defval is undefined:
defval = session_defaults()[key]
defval = self.defval(key)
return SessionData.get(self, (self.prefix + key), defval)
def get_library_option(self, library_id, key, defval):
@ -384,7 +387,7 @@ class UserSessionData(SessionData):
return self.get(key, defval)
lkey = key + '-||-' + library_id
if defval is undefined:
defval = session_defaults()[key]
defval = self.defval(key)
return self.get(lkey, defval)
def set(self, key, value):

View File

@ -157,11 +157,17 @@ def manifest_received(key, initial_position, pathtoebook, highlights, book_url,
xhr.error_html or None)
def clone(x):
if x:
x = window.structuredClone(x)
return x
class SessionData:
def __init__(self, prefs):
defaults = session_defaults()
self.data = {k: defaults[k] if prefs[k] is undefined else prefs[k] for k in defaults}
self.data = {k: clone(defaults[k]) if prefs[k] is undefined else clone(prefs[k]) for k in defaults}
def get(self, key, defval):
ans = self.data[key]
@ -173,7 +179,7 @@ class SessionData:
def set(self, key, val):
if val is None:
self.data[key] = session_defaults()[key]
self.data[key] = clone(session_defaults()[key])
else:
self.data[key] = val
to_python.set_session_data(key, val)
@ -183,14 +189,14 @@ class SessionData:
for key in Object.keys(changes):
val = changes[key]
if val is None:
self.data[key] = defaults[key]
self.data[key] = clone(defaults[key])
else:
self.data[key] = val
to_python.set_session_data(changes, None)
def clear(self):
defaults = session_defaults()
self.data = {k: defaults[k] for k in defaults}
self.data = {k: clone(defaults[k]) for k in defaults}
to_python.set_session_data('*', None)