Add in-memory cache to app.Settings to speed up repeated access to settings during arrow key scrolling

pull/605/head
Thibaut Courouble 8 years ago
parent 188c9d0229
commit 067fa9355e

@ -15,13 +15,21 @@ class app.Settings
constructor: -> constructor: ->
@store = new CookieStore @store = new CookieStore
@cache = {}
get: (key) ->
return @cache[key] if @cache.hasOwnProperty(key)
@cache[key] = @store.get(key) ? @constructor.defaults[key]
set: (key, value) -> set: (key, value) ->
@store.set(key, value) @store.set(key, value)
delete @cache[key]
return return
get: (key) -> del: (key) ->
@store.get(key) ? @constructor.defaults[key] @store.del(key)
delete @cache[key]
return
hasDocs: -> hasDocs: ->
try !!@store.get(DOCS_KEY) try !!@store.get(DOCS_KEY)
@ -30,14 +38,14 @@ class app.Settings
@store.get(DOCS_KEY)?.split('/') or app.config.default_docs @store.get(DOCS_KEY)?.split('/') or app.config.default_docs
setDocs: (docs) -> setDocs: (docs) ->
@store.set DOCS_KEY, docs.join('/') @set DOCS_KEY, docs.join('/')
return return
getTips: -> getTips: ->
@store.get(TIPS_KEY)?.split('/') or [] @store.get(TIPS_KEY)?.split('/') or []
setTips: (tips) -> setTips: (tips) ->
@store.set TIPS_KEY, tips.join('/') @set TIPS_KEY, tips.join('/')
return return
setLayout: (name, enable) -> setLayout: (name, enable) ->
@ -50,9 +58,9 @@ class app.Settings
$.arrayDelete(layout, name) $.arrayDelete(layout, name)
if layout.length > 0 if layout.length > 0
@store.set LAYOUT_KEY, layout.join(' ') @set LAYOUT_KEY, layout.join(' ')
else else
@store.del LAYOUT_KEY @del LAYOUT_KEY
return return
hasLayout: (name) -> hasLayout: (name) ->
@ -60,7 +68,7 @@ class app.Settings
layout.indexOf(name) isnt -1 layout.indexOf(name) isnt -1
setSize: (value) -> setSize: (value) ->
@store.set SIZE_KEY, value @set SIZE_KEY, value
return return
dump: -> dump: ->
@ -68,4 +76,5 @@ class app.Settings
reset: -> reset: ->
@store.reset() @store.reset()
@cache = {}
return return

Loading…
Cancel
Save