settings.coffee 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. class app.Settings
  2. DOCS_KEY = 'docs'
  3. DARK_KEY = 'dark'
  4. LAYOUT_KEY = 'layout'
  5. SIZE_KEY = 'size'
  6. TIPS_KEY = 'tips'
  7. @defaults:
  8. count: 0
  9. hideDisabled: false
  10. hideIntro: false
  11. news: 0
  12. manualUpdate: false
  13. schema: 1
  14. constructor: (legacyStore) ->
  15. @store = new CookieStore
  16. @importLegacyValues(legacyStore)
  17. importLegacyValues: (legacyStore) ->
  18. return unless settings = legacyStore.get('settings')
  19. for key, value of settings
  20. if key == 'autoUpdate'
  21. key = 'manualUpdate'
  22. value = !value
  23. else if key == 'tips'
  24. value = value.join('/')
  25. @store.set(key, value)
  26. legacyStore.del('settings')
  27. return
  28. set: (key, value) ->
  29. @store.set(key, value)
  30. return
  31. get: (key) ->
  32. @store.get(key) ? @constructor.defaults[key]
  33. hasDocs: ->
  34. try !!@store.get(DOCS_KEY)
  35. getDocs: ->
  36. @store.get(DOCS_KEY)?.split('/') or app.config.default_docs
  37. setDocs: (docs) ->
  38. @store.set DOCS_KEY, docs.join('/')
  39. return
  40. getTips: ->
  41. @store.get(TIPS_KEY)?.split('/') or []
  42. setTips: (tips) ->
  43. @store.set TIPS_KEY, tips.join('/')
  44. return
  45. setDark: (value) ->
  46. @store.set DARK_KEY, !!value
  47. return
  48. getDark: ->
  49. @store.get DARK_KEY
  50. setLayout: (name, enable) ->
  51. layout = (@store.get(LAYOUT_KEY) || '').split(' ')
  52. $.arrayDelete(layout, '')
  53. if enable
  54. layout.push(name) if layout.indexOf(name) is -1
  55. else
  56. $.arrayDelete(layout, name)
  57. if layout.length > 0
  58. @store.set LAYOUT_KEY, layout.join(' ')
  59. else
  60. @store.del LAYOUT_KEY
  61. return
  62. hasLayout: (name) ->
  63. layout = (@store.get(LAYOUT_KEY) || '').split(' ')
  64. layout.indexOf(name) isnt -1
  65. setSize: (value) ->
  66. @store.set SIZE_KEY, value
  67. return
  68. dump: ->
  69. @store.dump()
  70. reset: ->
  71. @store.reset()
  72. return