keeweb/app/scripts/comp/settings/settings-store.js

65 lines
1.9 KiB
JavaScript
Raw Normal View History

2019-09-15 14:16:32 +02:00
import { Launcher } from 'comp/launcher';
import { StringFormat } from 'util/formatting/string-format';
import { Logger } from 'util/logger';
2015-12-12 09:53:50 +01:00
2017-01-31 07:50:28 +01:00
const logger = new Logger('settings');
2015-12-05 14:57:43 +01:00
2017-01-31 07:50:28 +01:00
const SettingsStore = {
2019-08-18 10:17:09 +02:00
fileName(key) {
2017-02-04 14:17:34 +01:00
return `${key}.json`;
2015-12-05 14:57:43 +01:00
},
2019-08-18 10:17:09 +02:00
load(key) {
return new Promise(resolve => {
2017-02-04 14:17:34 +01:00
if (Launcher) {
2017-01-31 07:50:28 +01:00
const settingsFile = Launcher.getUserDataPath(this.fileName(key));
2017-02-04 14:17:34 +01:00
Launcher.fileExists(settingsFile, exists => {
if (exists) {
Launcher.readFile(settingsFile, 'utf8', data => {
return this.parseData(key, data, resolve);
});
2017-02-05 11:08:26 +01:00
} else {
resolve();
2017-02-04 14:17:34 +01:00
}
});
2015-12-05 14:57:43 +01:00
} else {
2019-09-15 08:11:11 +02:00
const data = localStorage[StringFormat.camelCase(key)];
return this.parseData(key, data, resolve);
}
});
},
2019-08-18 10:17:09 +02:00
parseData(key, data, resolve) {
try {
if (data) {
return resolve(JSON.parse(data));
} else {
resolve();
2015-12-05 14:57:43 +01:00
}
} catch (e) {
logger.error('Error loading ' + key, e);
resolve();
2015-12-05 14:57:43 +01:00
}
},
2019-08-18 10:17:09 +02:00
save(key, data) {
return new Promise(resolve => {
2017-02-04 14:17:34 +01:00
if (Launcher) {
const settingsFile = Launcher.getUserDataPath(this.fileName(key));
2017-06-06 20:40:27 +02:00
data = JSON.stringify(data);
2017-06-05 11:48:03 +02:00
Launcher.writeFile(settingsFile, data, err => {
2017-02-05 11:08:26 +01:00
if (err) {
logger.error(`Error saving ${key}`, err);
}
resolve();
2017-02-05 11:08:26 +01:00
});
2015-12-05 14:57:43 +01:00
} else if (typeof localStorage !== 'undefined') {
2019-09-15 08:11:11 +02:00
localStorage[StringFormat.camelCase(key)] = JSON.stringify(data);
resolve();
2015-12-05 14:57:43 +01:00
}
});
2015-12-05 14:57:43 +01:00
}
};
2019-09-15 14:16:32 +02:00
export { SettingsStore };