History

Load layout preferences client-side from cookies

Jasper van Merle committed 7 years ago

Commit 35f6f711 parent 55924ae3 files · +25 −9Browse files

Unified · Split

3 files
  1. assets/javascripts/app/app.coffee +2 −0
  2. assets/javascripts/app/settings.coffee +22 −0
  3. assets/javascripts/views/content/settings_page.coffee +1 −9
assets/javascripts/app/app.coffee+2−0
@@ -26,6 +26,8 @@ · 25 unmodified lines
2626 @document = new app.views.Document
2727 @mobile = new app.views.Mobile if @isMobile()
2828
29+ @settings.initLayout()
30+
2931 if document.body.hasAttribute('data-doc')
3032 @DOC = JSON.parse(document.body.getAttribute('data-doc'))
3133 @bootOne()
assets/javascripts/app/settings.coffee+22−0
@@ -19,6 +19,9 @@ class app.Settings · 18 unmodified lines
1919 'news'
2020 ]
2121
22+ LAYOUTS = ['_max-width', '_sidebar-hidden', '_native-scrollbars']
23+ SIDEBAR_HIDDEN_LAYOUT = '_sidebar-hidden'
24+
2225 @defaults:
2326 count: 0
2427 hideDisabled: false
@@ -38,6 +41,7 @@ class app.Settings · 13 unmodified lines
3841 set: (key, value) ->
3942 @store.set(key, value)
4043 delete @cache[key]
44+ @toggleDark(value) if key == 'dark'
4145 return
4246
4347 del: (key) ->
@@ -63,6 +67,8 @@ class app.Settings · 19 unmodified lines
6367 return
6468
6569 setLayout: (name, enable) ->
70+ @toggleLayout(name, enable)
71+
6672 layout = (@store.get('layout') || '').split(' ')
6773 $.arrayDelete(layout, '')
6874
@@ -81,6 +87,9 @@ class app.Settings · 12 unmodified lines
8187 layout = (@store.get('layout') || '').split(' ')
8288 layout.indexOf(name) isnt -1
8389
90+ getAllLayouts: ->
91+ return LAYOUTS
92+
8493 setSize: (value) ->
8594 @set 'size', value
8695 return
@@ -104,3 +113,16 @@ class app.Settings · 17 unmodified lines
104113 @store.reset()
105114 @cache = {}
106115 return
116+
117+ initLayout: ->
118+ @toggleDark(@get('dark'))
119+ @toggleLayout(layout, @hasLayout(layout)) for layout in LAYOUTS
120+
121+ toggleDark: (enable) ->
122+ classList = document.documentElement.classList
123+ classList[if enable then 'remove' else 'add']('_theme-default')
124+ classList[if enable then 'add' else 'remove']('_theme-dark')
125+
126+ toggleLayout: (layout, enable) ->
127+ document.body.classList[if enable then 'add' else 'remove'](layout) unless layout is SIDEBAR_HIDDEN_LAYOUT
128+ document.body.classList[if $.overlayScrollbarsEnabled() then 'add' else 'remove']('_overlay-scrollbars')
assets/javascripts/views/content/settings_page.coffee+1−9
@@ -1,7 +1,4 @@
11 class app.views.SettingsPage extends app.View
2− LAYOUTS = ['_max-width', '_sidebar-hidden', '_native-scrollbars']
3− SIDEBAR_HIDDEN_LAYOUT = '_sidebar-hidden'
4−
52 @className: '_static'
63
74 @events:
@@ -17,23 +14,18 @@ class app.views.SettingsPage extends app.View · 9 unmodified lines
1714 settings.dark = app.settings.get('dark')
1815 settings.smoothScroll = !app.settings.get('fastScroll')
1916 settings.arrowScroll = app.settings.get('arrowScroll')
20− settings[layout] = app.settings.hasLayout(layout) for layout in LAYOUTS
17+ settings[layout] = app.settings.hasLayout(layout) for layout in app.settings.getAllLayouts()
2118 settings
2219
2320 getTitle: ->
2421 'Preferences'
2522
2623 toggleDark: (enable) ->
27− html = document.documentElement
28− html.classList.toggle('_theme-default')
29− html.classList.toggle('_theme-dark')
3024 app.settings.set('dark', !!enable)
3125 app.appCache?.updateInBackground()
3226 return
3327
3428 toggleLayout: (layout, enable) ->
35− document.body.classList[if enable then 'add' else 'remove'](layout) unless layout is SIDEBAR_HIDDEN_LAYOUT
36− document.body.classList[if $.overlayScrollbarsEnabled() then 'add' else 'remove']('_overlay-scrollbars')
3729 app.settings.setLayout(layout, enable)
3830 app.appCache?.updateInBackground()
3931 return