mirror of
https://github.com/rr-/szurubooru.git
synced 2025-07-17 08:26:24 +00:00
client/settings: add accountless settings
This commit is contained in:
53
client/js/controllers/settings_controller.js
Normal file
53
client/js/controllers/settings_controller.js
Normal file
@ -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();
|
Reference in New Issue
Block a user