You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
devdocs/assets/javascripts/app/settings.coffee

95 lines
1.9 KiB

class app.Settings
SETTINGS_KEY = 'settings'
DOCS_KEY = 'docs'
DARK_KEY = 'dark'
LAYOUT_KEY = 'layout'
SIZE_KEY = 'size'
SIDEBAR_KEY = 'sidebar'
@defaults:
count: 0
hideDisabled: false
hideIntro: false
news: 0
autoUpdate: true
schema: 0
constructor: (@store) ->
@create() unless @settings = @store.get(SETTINGS_KEY)
create: ->
@settings = $.extend({}, @constructor.defaults)
@applyLegacyValues @settings
@save()
return
applyLegacyValues: (settings) ->
for key, v of settings when (value = @store.get(key))?
settings[key] = value
@store.del(key)
return
save: ->
@store.set SETTINGS_KEY, @settings
set: (key, value) ->
@settings[key] = value
@save()
get: (key) ->
@settings[key] ? @constructor.defaults[key]
hasDocs: ->
try !!Cookies.get DOCS_KEY
getDocs: ->
try
Cookies.get(DOCS_KEY)?.split('/') or app.config.default_docs
catch
app.config.default_docs
setDocs: (docs) ->
try
Cookies.set DOCS_KEY, docs.join('/'), path: '/', expires: 1e8
catch
return
setDark: (value) ->
try
if value
Cookies.set DARK_KEY, '1', path: '/', expires: 1e8
else
Cookies.expire DARK_KEY
catch
return
setLayout: (value) ->
try
if value
Cookies.set LAYOUT_KEY, value, path: '/', expires: 1e8
else
Cookies.expire LAYOUT_KEY
catch
return
setSize: (value) ->
try
Cookies.set SIZE_KEY, value, path: '/', expires: 1e8
catch
return
setSidebar: (value) ->
try
Cookies.set SIDEBAR_KEY, value, path: '/', expires: 1e8
catch
return
reset: ->
try Cookies.expire DOCS_KEY
try Cookies.expire DARK_KEY
try Cookies.expire LAYOUT_KEY
try Cookies.expire SIZE_KEY
try Cookies.expire SIDEBAR_KEY
try @store.del(SETTINGS_KEY)
return