class app.Settings DOCS_KEY = 'docs' DARK_KEY = 'dark' LAYOUT_KEY = 'layout' SIZE_KEY = 'size' TIPS_KEY = 'tips' @defaults: count: 0 hideDisabled: false hideIntro: false news: 0 manualUpdate: false schema: 1 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 del: (key) -> @store.del(key) delete @cache[key] return hasDocs: -> try !!@store.get(DOCS_KEY) getDocs: -> @store.get(DOCS_KEY)?.split('/') or app.config.default_docs setDocs: (docs) -> @set DOCS_KEY, docs.join('/') return getTips: -> @store.get(TIPS_KEY)?.split('/') or [] setTips: (tips) -> @set TIPS_KEY, tips.join('/') return setLayout: (name, enable) -> layout = (@store.get(LAYOUT_KEY) || '').split(' ') $.arrayDelete(layout, '') if enable layout.push(name) if layout.indexOf(name) is -1 else $.arrayDelete(layout, name) if layout.length > 0 @set LAYOUT_KEY, layout.join(' ') else @del LAYOUT_KEY return hasLayout: (name) -> layout = (@store.get(LAYOUT_KEY) || '').split(' ') layout.indexOf(name) isnt -1 setSize: (value) -> @set SIZE_KEY, value return dump: -> @store.dump() reset: -> @store.reset() @cache = {} return