aboutsummaryrefslogtreecommitdiff
path: root/client/js/controllers/settings_controller.js
diff options
context:
space:
mode:
authorrr-2016-04-11 22:38:59 +0200
committerrr-2016-04-11 22:48:47 +0200
commit21c15f4cb94edb142a94f344db3bfc4c6322cbb1 (patch)
treeb89108cd26bfd24e4cb5125dff6c6f97eaf7cc15 /client/js/controllers/settings_controller.js
parentf5272bb5f332e240968b9a7a7a7ace0550c5ccfc (diff)
client/settings: add accountless settings
Diffstat (limited to 'client/js/controllers/settings_controller.js')
-rw-r--r--client/js/controllers/settings_controller.js53
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();

© 2015 - 2026 Jakob L. Kreuze