mirror of https://github.com/keeweb/keeweb.git
42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
import { Model } from 'framework/model';
|
|
import { SettingsStore } from 'comp/settings/settings-store';
|
|
import { DefaultAppSettings } from 'const/default-app-settings';
|
|
|
|
class AppSettingsModel extends Model {
|
|
constructor() {
|
|
super();
|
|
this.on('change', () => this.save());
|
|
}
|
|
|
|
load() {
|
|
return SettingsStore.load('app-settings').then(data => {
|
|
if (data) {
|
|
this.upgrade(data);
|
|
this.set(data, { silent: true });
|
|
}
|
|
});
|
|
}
|
|
|
|
upgrade(data) {
|
|
if (data.rememberKeyFiles === true) {
|
|
data.rememberKeyFiles = 'data';
|
|
}
|
|
}
|
|
|
|
save() {
|
|
const values = {};
|
|
for (const [key, value] of Object.entries(this)) {
|
|
if (DefaultAppSettings[key] !== value) {
|
|
values[key] = value;
|
|
}
|
|
}
|
|
SettingsStore.save('app-settings', values);
|
|
}
|
|
}
|
|
|
|
AppSettingsModel.defineModelProperties(DefaultAppSettings, { extensions: true });
|
|
|
|
const instance = new AppSettingsModel();
|
|
|
|
export { instance as AppSettingsModel };
|