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