diff options
| author | rr- | 2016-04-11 22:38:59 +0200 |
|---|---|---|
| committer | rr- | 2016-04-11 22:48:47 +0200 |
| commit | 21c15f4cb94edb142a94f344db3bfc4c6322cbb1 (patch) | |
| tree | b89108cd26bfd24e4cb5125dff6c6f97eaf7cc15 /client/js/controllers/settings_controller.js | |
| parent | f5272bb5f332e240968b9a7a7a7ace0550c5ccfc (diff) | |
client/settings: add accountless settings
Diffstat (limited to 'client/js/controllers/settings_controller.js')
| -rw-r--r-- | client/js/controllers/settings_controller.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/client/js/controllers/settings_controller.js b/client/js/controllers/settings_controller.js new file mode 100644 index 0000000..731ea2d --- /dev/null +++ b/client/js/controllers/settings_controller.js @@ -0,0 +1,53 @@ +'use strict'; + +const page = require('page'); +const events = require('../events.js'); +const topNavController = require('../controllers/top_nav_controller.js'); +const SettingsView = require('../views/settings_view.js'); + +class SettingsController { + constructor() { + this.settingsView = new SettingsView(); + } + + registerRoutes() { + page('/settings', (ctx, next) => { this.settingsRoute(); }); + } + + settingsRoute() { + topNavController.activate('settings'); + this.settingsView.render({ + getSettings: () => this.getSettings(), + saveSettings: newSettings => this.saveSettings(newSettings), + }); + } + + saveSettings(browsingSettings) { + localStorage.setItem('settings', JSON.stringify(browsingSettings)); + events.notify(events.Success, 'Settings saved'); + } + + getSettings(settings) { + const defaultSettings = { + endlessScroll: false, + }; + let ret = {}; + let userSettings = localStorage.getItem('settings'); + if (userSettings) { + userSettings = JSON.parse(userSettings); + } + if (!userSettings) { + userSettings = {}; + } + for (let key of Object.keys(defaultSettings)) { + if (key in userSettings) { + ret[key] = userSettings[key]; + } else { + ret[key] = defaultSettings[key]; + } + } + return ret; + } +}; + +module.exports = new SettingsController(); |