mirror of https://github.com/freeCodeCamp/devdocs
parent
d0802988f1
commit
4b26951ff0
@ -1,101 +1,88 @@
|
|||||||
class app.Settings
|
class app.Settings
|
||||||
SETTINGS_KEY = 'settings'
|
|
||||||
DOCS_KEY = 'docs'
|
DOCS_KEY = 'docs'
|
||||||
DARK_KEY = 'dark'
|
DARK_KEY = 'dark'
|
||||||
LAYOUT_KEY = 'layout'
|
LAYOUT_KEY = 'layout'
|
||||||
SIZE_KEY = 'size'
|
SIZE_KEY = 'size'
|
||||||
|
TIPS_KEY = 'tips'
|
||||||
|
|
||||||
@defaults:
|
@defaults:
|
||||||
count: 0
|
count: 0
|
||||||
hideDisabled: false
|
hideDisabled: false
|
||||||
hideIntro: false
|
hideIntro: false
|
||||||
news: 0
|
news: 0
|
||||||
autoUpdate: true
|
manualUpdate: false
|
||||||
schema: 1
|
schema: 1
|
||||||
|
|
||||||
constructor: (@store) ->
|
constructor: (legacyStore) ->
|
||||||
@create() unless @settings = @store.get(SETTINGS_KEY)
|
@store = new CookieStore
|
||||||
|
@importLegacyValues(legacyStore)
|
||||||
create: ->
|
|
||||||
@settings = $.extend({}, @constructor.defaults)
|
importLegacyValues: (legacyStore) ->
|
||||||
@applyLegacyValues @settings
|
return unless settings = legacyStore.get('settings')
|
||||||
@save()
|
for key, value of settings
|
||||||
return
|
if key == 'autoUpdate'
|
||||||
|
key = 'manualUpdate'
|
||||||
applyLegacyValues: (settings) ->
|
value = !value
|
||||||
for key, v of settings when (value = @store.get(key))?
|
else if key == 'tips'
|
||||||
settings[key] = value
|
value = value.join('/')
|
||||||
@store.del(key)
|
@store.set(key, value)
|
||||||
|
legacyStore.del('settings')
|
||||||
return
|
return
|
||||||
|
|
||||||
save: ->
|
|
||||||
@store.set SETTINGS_KEY, @settings
|
|
||||||
|
|
||||||
set: (key, value) ->
|
set: (key, value) ->
|
||||||
@settings[key] = value
|
@store.set(key, value)
|
||||||
@save()
|
return
|
||||||
|
|
||||||
get: (key) ->
|
get: (key) ->
|
||||||
@settings[key] ? @constructor.defaults[key]
|
@store.get(key) ? @constructor.defaults[key]
|
||||||
|
|
||||||
hasDocs: ->
|
hasDocs: ->
|
||||||
try !!Cookies.get DOCS_KEY
|
try !!@store.get(DOCS_KEY)
|
||||||
|
|
||||||
getDocs: ->
|
getDocs: ->
|
||||||
try
|
@store.get(DOCS_KEY)?.split('/') or app.config.default_docs
|
||||||
Cookies.get(DOCS_KEY)?.split('/') or app.config.default_docs
|
|
||||||
catch
|
|
||||||
app.config.default_docs
|
|
||||||
|
|
||||||
setDocs: (docs) ->
|
setDocs: (docs) ->
|
||||||
try
|
@store.set DOCS_KEY, docs.join('/')
|
||||||
Cookies.set DOCS_KEY, docs.join('/'), path: '/', expires: 1e8
|
return
|
||||||
catch
|
|
||||||
|
getTips: ->
|
||||||
|
@store.get(TIPS_KEY)?.split('/') or []
|
||||||
|
|
||||||
|
setTips: (tips) ->
|
||||||
|
@store.set TIPS_KEY, tips.join('/')
|
||||||
return
|
return
|
||||||
|
|
||||||
setDark: (value) ->
|
setDark: (value) ->
|
||||||
try
|
@store.set DARK_KEY, !!value
|
||||||
if value
|
|
||||||
Cookies.set DARK_KEY, '1', path: '/', expires: 1e8
|
|
||||||
else
|
|
||||||
Cookies.expire DARK_KEY
|
|
||||||
catch
|
|
||||||
return
|
return
|
||||||
|
|
||||||
setLayout: (name, enable) ->
|
setLayout: (name, enable) ->
|
||||||
try
|
layout = (@store.get(LAYOUT_KEY) || '').split(' ')
|
||||||
layout = (Cookies.get(LAYOUT_KEY) || '').split(' ')
|
$.arrayDelete(layout, '')
|
||||||
$.arrayDelete(layout, '')
|
|
||||||
|
if enable
|
||||||
if enable
|
layout.push(name) if layout.indexOf(name) is -1
|
||||||
layout.push(name) if layout.indexOf(name) is -1
|
else
|
||||||
else
|
$.arrayDelete(layout, name)
|
||||||
$.arrayDelete(layout, name)
|
|
||||||
|
if layout.length > 0
|
||||||
if layout.length > 0
|
@store.set LAYOUT_KEY, layout.join(' ')
|
||||||
Cookies.set LAYOUT_KEY, layout.join(' '), path: '/', expires: 1e8
|
else
|
||||||
else
|
@store.del LAYOUT_KEY
|
||||||
Cookies.expire LAYOUT_KEY
|
|
||||||
catch
|
|
||||||
return
|
return
|
||||||
|
|
||||||
hasLayout: (name) ->
|
hasLayout: (name) ->
|
||||||
try
|
layout = (@store.get(LAYOUT_KEY) || '').split(' ')
|
||||||
layout = (Cookies.get(LAYOUT_KEY) || '').split(' ')
|
layout.indexOf(name) isnt -1
|
||||||
layout.indexOf(name) isnt -1
|
|
||||||
catch
|
|
||||||
false
|
|
||||||
|
|
||||||
setSize: (value) ->
|
setSize: (value) ->
|
||||||
try
|
@store.set SIZE_KEY, value
|
||||||
Cookies.set SIZE_KEY, value, path: '/', expires: 1e8
|
|
||||||
catch
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
dump: ->
|
||||||
|
@store.dump()
|
||||||
|
|
||||||
reset: ->
|
reset: ->
|
||||||
try Cookies.expire DOCS_KEY
|
@store.reset()
|
||||||
try Cookies.expire DARK_KEY
|
|
||||||
try Cookies.expire LAYOUT_KEY
|
|
||||||
try Cookies.expire SIZE_KEY
|
|
||||||
try @store.del(SETTINGS_KEY)
|
|
||||||
return
|
return
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
class @CookieStore
|
||||||
|
INT = /^\d+$/
|
||||||
|
|
||||||
|
get: (key) ->
|
||||||
|
try
|
||||||
|
value = Cookies.get(key)
|
||||||
|
value = parseInt(value, 10) if value? and INT.test(value)
|
||||||
|
value
|
||||||
|
catch
|
||||||
|
|
||||||
|
set: (key, value) ->
|
||||||
|
if value == false
|
||||||
|
return @del(key)
|
||||||
|
else if value == true
|
||||||
|
value = 1
|
||||||
|
|
||||||
|
try
|
||||||
|
Cookies.set(key, '' + value, path: '/', expires: 1e8)
|
||||||
|
true
|
||||||
|
catch
|
||||||
|
|
||||||
|
del: (key) ->
|
||||||
|
try
|
||||||
|
Cookies.expire(key)
|
||||||
|
true
|
||||||
|
catch
|
||||||
|
|
||||||
|
reset: ->
|
||||||
|
try
|
||||||
|
for cookie in document.cookie.split(/;\s?/)
|
||||||
|
Cookies.expire(cookie.split('=')[0])
|
||||||
|
return
|
||||||
|
catch
|
||||||
|
|
||||||
|
dump: ->
|
||||||
|
result = {}
|
||||||
|
for cookie in document.cookie.split(/;\s?/)
|
||||||
|
cookie = cookie.split('=')
|
||||||
|
result[cookie[0]] = cookie[1]
|
||||||
|
result
|
Loading…
Reference in new issue