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

39 lines
1.1 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
load(key) {
2020-05-22 22:28:12 +02:00
let loadPromise;
if (Launcher) {
2020-05-22 22:28:12 +02:00
loadPromise = Launcher.loadConfig(key);
} else {
loadPromise = Promise.resolve().then(() => {
return localStorage[StringFormat.camelCase(key)];
});
2015-12-05 14:57:43 +01:00
}
2020-05-22 22:28:12 +02:00
return loadPromise
2020-06-01 16:53:51 +02:00
.then((data) => (data ? JSON.parse(data) : null))
.catch((err) => {
2020-05-22 22:28:12 +02:00
logger.error(`Error loading ${key}`, err);
});
2015-12-05 14:57:43 +01:00
},
2019-08-18 10:17:09 +02:00
save(key, data) {
if (Launcher) {
2020-06-01 16:53:51 +02:00
return Launcher.saveConfig(key, JSON.stringify(data)).catch((err) => {
logger.error(`Error saving ${key}`, err);
});
}
return Promise.resolve().then(() => {
if (typeof localStorage !== 'undefined') {
2019-09-15 08:11:11 +02:00
localStorage[StringFormat.camelCase(key)] = JSON.stringify(data);
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 };