keeweb/app/scripts/models/app-settings-model.js

42 lines
1.1 KiB
JavaScript
Raw Normal View History

2019-09-17 19:50:42 +02:00
import { Model } from 'framework/model';
2019-09-15 14:16:32 +02:00
import { SettingsStore } from 'comp/settings/settings-store';
import { DefaultAppSettings } from 'const/default-app-settings';
2015-10-17 23:49:24 +02:00
2019-09-17 19:50:42 +02:00
class AppSettingsModel extends Model {
constructor() {
super();
this.on('change', () => this.save());
}
2015-10-17 23:49:24 +02:00
2019-08-18 10:17:09 +02:00
load() {
2020-06-01 16:53:51 +02:00
return SettingsStore.load('app-settings').then((data) => {
if (data) {
this.upgrade(data);
2019-08-16 23:05:39 +02:00
this.set(data, { silent: true });
}
});
2019-09-17 19:50:42 +02:00
}
2019-08-18 10:17:09 +02:00
upgrade(data) {
2017-01-28 23:36:30 +01:00
if (data.rememberKeyFiles === true) {
data.rememberKeyFiles = 'data';
}
2019-09-17 19:50:42 +02:00
}
2017-01-28 23:36:30 +01:00
2019-08-18 10:17:09 +02:00
save() {
const values = {};
for (const [key, value] of Object.entries(this)) {
if (DefaultAppSettings[key] !== value) {
values[key] = value;
}
}
SettingsStore.save('app-settings', values);
2015-10-17 23:49:24 +02:00
}
2019-09-17 19:50:42 +02:00
}
AppSettingsModel.defineModelProperties(DefaultAppSettings, { extensions: true });
2015-10-17 23:49:24 +02:00
2019-09-17 19:50:42 +02:00
const instance = new AppSettingsModel();
2015-10-17 23:49:24 +02:00
2019-09-17 19:50:42 +02:00
export { instance as AppSettingsModel };