History

Load layout preferences client-side from cookies

Jasper van Merle committed 7 years ago

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

Showing the changes to assets/javascripts (3 of 3 files). Show all

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
26 @document = new app.views.Document26 @document = new app.views.Document
27 @mobile = new app.views.Mobile if @isMobile()27 @mobile = new app.views.Mobile if @isMobile()
28 28
29 @settings.initLayout()
30
29 if document.body.hasAttribute('data-doc')31 if document.body.hasAttribute('data-doc')
30 @DOC = JSON.parse(document.body.getAttribute('data-doc'))32 @DOC = JSON.parse(document.body.getAttribute('data-doc'))
31 @bootOne()33 @bootOne()
assets/javascripts/app/settings.coffee+22−0
@@ -19,6 +19,9 @@ class app.Settings · 18 unmodified lines
19 'news'19 'news'
20 ]20 ]
21 21
22 LAYOUTS = ['_max-width', '_sidebar-hidden', '_native-scrollbars']
23 SIDEBAR_HIDDEN_LAYOUT = '_sidebar-hidden'
24
22 @defaults:25 @defaults:
23 count: 026 count: 0
24 hideDisabled: false27 hideDisabled: false
@@ -38,6 +41,7 @@ class app.Settings · 13 unmodified lines
38 set: (key, value) ->41 set: (key, value) ->
39 @store.set(key, value)42 @store.set(key, value)
40 delete @cache[key]43 delete @cache[key]
44 @toggleDark(value) if key == 'dark'
41 return45 return
42 46
43 del: (key) ->47 del: (key) ->
@@ -63,6 +67,8 @@ class app.Settings · 19 unmodified lines
63 return67 return
64 68
65 setLayout: (name, enable) ->69 setLayout: (name, enable) ->
70 @toggleLayout(name, enable)
71
66 layout = (@store.get('layout') || '').split(' ')72 layout = (@store.get('layout') || '').split(' ')
67 $.arrayDelete(layout, '')73 $.arrayDelete(layout, '')
68 74
@@ -81,6 +87,9 @@ class app.Settings · 12 unmodified lines
81 layout = (@store.get('layout') || '').split(' ')87 layout = (@store.get('layout') || '').split(' ')
82 layout.indexOf(name) isnt -188 layout.indexOf(name) isnt -1
83 89
90 getAllLayouts: ->
91 return LAYOUTS
92
84 setSize: (value) ->93 setSize: (value) ->
85 @set 'size', value94 @set 'size', value
86 return95 return
@@ -104,3 +113,16 @@ class app.Settings · 17 unmodified lines
104 @store.reset()113 @store.reset()
105 @cache = {}114 @cache = {}
106 return115 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 @@
1class app.views.SettingsPage extends app.View1class app.views.SettingsPage extends app.View
2 LAYOUTS = ['_max-width', '_sidebar-hidden', '_native-scrollbars']
3 SIDEBAR_HIDDEN_LAYOUT = '_sidebar-hidden'
4
5 @className: '_static'2 @className: '_static'
6 3
7 @events:4 @events:
@@ -17,23 +14,18 @@ class app.views.SettingsPage extends app.View · 9 unmodified lines
17 settings.dark = app.settings.get('dark')14 settings.dark = app.settings.get('dark')
18 settings.smoothScroll = !app.settings.get('fastScroll')15 settings.smoothScroll = !app.settings.get('fastScroll')
19 settings.arrowScroll = app.settings.get('arrowScroll')16 settings.arrowScroll = app.settings.get('arrowScroll')
20 settings[layout] = app.settings.hasLayout(layout) for layout in LAYOUTS17 settings[layout] = app.settings.hasLayout(layout) for layout in app.settings.getAllLayouts()
21 settings18 settings
22 19
23 getTitle: ->20 getTitle: ->
24 'Preferences'21 'Preferences'
25 22
26 toggleDark: (enable) ->23 toggleDark: (enable) ->
27 html = document.documentElement
28 html.classList.toggle('_theme-default')
29 html.classList.toggle('_theme-dark')
30 app.settings.set('dark', !!enable)24 app.settings.set('dark', !!enable)
31 app.appCache?.updateInBackground()25 app.appCache?.updateInBackground()
32 return26 return
33 27
34 toggleLayout: (layout, enable) ->28 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')
37 app.settings.setLayout(layout, enable)29 app.settings.setLayout(layout, enable)
38 app.appCache?.updateInBackground()30 app.appCache?.updateInBackground()
39 return31 return