mirror of https://github.com/keeweb/keeweb.git
settings store
This commit is contained in:
parent
db062cec27
commit
6aa32b1dc0
|
@ -0,0 +1,41 @@
|
|||
'use strict';
|
||||
|
||||
var Launcher = require('./launcher'),
|
||||
StringUtil = require('../util/string-util');
|
||||
|
||||
var SettingsStore = {
|
||||
fileName: function(key) {
|
||||
return key + '.json';
|
||||
},
|
||||
|
||||
load: function(key) {
|
||||
try {
|
||||
if (Launcher) {
|
||||
var settingsFile = Launcher.getUserDataPath(this.fileName(key));
|
||||
if (Launcher.fileExists(settingsFile)) {
|
||||
return JSON.parse(Launcher.readFile(settingsFile, 'utf8'));
|
||||
}
|
||||
} else {
|
||||
var data = localStorage[StringUtil.camelCase(key)];
|
||||
return JSON.parse(data);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Error loading ' + key, e);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
save: function(key, data) {
|
||||
try {
|
||||
if (Launcher) {
|
||||
Launcher.writeFile(Launcher.getUserDataPath(this.fileName(key)), JSON.stringify(data));
|
||||
} else if (typeof localStorage !== 'undefined') {
|
||||
localStorage[StringUtil.camelCase(key)] = JSON.stringify(data);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Error saving ' + key, e);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = SettingsStore;
|
|
@ -1,13 +1,11 @@
|
|||
'use strict';
|
||||
|
||||
var Backbone = require('backbone'),
|
||||
Launcher = require('../comp/launcher');
|
||||
|
||||
var FileName = 'app-settings.json';
|
||||
SettingsStore = require('../comp/settings-store');
|
||||
|
||||
var AppSettingsModel = Backbone.Model.extend({
|
||||
defaults: {
|
||||
theme: 'd',
|
||||
theme: 'fb',
|
||||
expandGroups: true,
|
||||
listViewWidth: null,
|
||||
menuViewWidth: null,
|
||||
|
@ -27,34 +25,15 @@ var AppSettingsModel = Backbone.Model.extend({
|
|||
},
|
||||
|
||||
load: function() {
|
||||
try {
|
||||
var data;
|
||||
if (Launcher) {
|
||||
var settingsFile = Launcher.getUserDataPath(FileName);
|
||||
if (Launcher.fileExists(settingsFile)) {
|
||||
data = JSON.parse(Launcher.readFile(settingsFile, 'utf8'));
|
||||
}
|
||||
} else if (typeof localStorage !== 'undefined' && localStorage.appSettings) {
|
||||
data = JSON.parse(localStorage.appSettings);
|
||||
}
|
||||
if (data) {
|
||||
this.set(data, {silent: true});
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Error loading settings', e);
|
||||
var data = SettingsStore.load('app-settings');
|
||||
if (data) {
|
||||
if (data.theme === 'd') { data.theme = 'db'; } // TODO: remove in v0.6
|
||||
this.set(data, {silent: true});
|
||||
}
|
||||
},
|
||||
|
||||
save: function() {
|
||||
try {
|
||||
if (Launcher) {
|
||||
Launcher.writeFile(Launcher.getUserDataPath(FileName), JSON.stringify(this.attributes));
|
||||
} else if (typeof localStorage !== 'undefined') {
|
||||
localStorage.appSettings = JSON.stringify(this.attributes);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Error saving settings', e);
|
||||
}
|
||||
SettingsStore.save('app-settings', this.attributes);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
var Backbone = require('backbone');
|
||||
var Backbone = require('backbone'),
|
||||
SettingsStore = require('../comp/settings-store');
|
||||
|
||||
var UpdateModel = Backbone.Model.extend({
|
||||
defaults: {
|
||||
|
@ -19,9 +20,9 @@ var UpdateModel = Backbone.Model.extend({
|
|||
},
|
||||
|
||||
load: function() {
|
||||
if (localStorage.updateInfo) {
|
||||
var data = SettingsStore.load('update-info');
|
||||
if (data) {
|
||||
try {
|
||||
var data = JSON.parse(localStorage.updateInfo);
|
||||
_.each(data, function(val, key) {
|
||||
if (/Date$/.test(key)) {
|
||||
data[key] = val ? new Date(val) : null;
|
||||
|
@ -39,7 +40,7 @@ var UpdateModel = Backbone.Model.extend({
|
|||
delete attr[key];
|
||||
}
|
||||
});
|
||||
localStorage.updateInfo = JSON.stringify(attr);
|
||||
SettingsStore.save('update-info', attr);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
'use strict';
|
||||
|
||||
var StringUtil = {
|
||||
camelCaseRegex: /\-./g,
|
||||
|
||||
camelCase: function(str) {
|
||||
return str.replace(this.camelCaseRegex, function(match) { return match[1].toUpperCase(); });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = StringUtil;
|
|
@ -32,9 +32,9 @@ var SettingsGeneralView = Backbone.View.extend({
|
|||
},
|
||||
|
||||
allThemes: {
|
||||
d: 'default',
|
||||
fb: 'flat blue',
|
||||
wh: 'white'
|
||||
fb: 'Flat blue',
|
||||
db: 'Dark brown',
|
||||
wh: 'White'
|
||||
},
|
||||
|
||||
initialize: function() {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
$themes: ();
|
||||
|
||||
@import "default";
|
||||
@import "dark-brown";
|
||||
@import "flat-blue";
|
||||
@import "white";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
$themes: map-merge($themes, (
|
||||
d: (
|
||||
db: (
|
||||
background-color: #342F2E,
|
||||
medium-color: #FED9D8,
|
||||
text-color: #FFEAE9,
|
Loading…
Reference in New Issue